2013-07-30 52 views
1

我目前的項目需要我將各對字符串用於各種用例。我目前使用Apache Lang3 Pair tuple來處理這種情況。當前的實現看起來像下面跟蹤字符串對

private List<Pair<String, String>> configParameters; 
private List<Pair<String, String>> sensorReadingMeasures; 

與球隊就決定,因爲我們需要揭露這些字符串對那將是最好找本地Java解決方案的其餘部分討論之後。

我試圖找到java util庫中使用AbstractMap的解決方案,但我沒有太多的運氣能夠實例化它,而谷歌搜索沒有提供很多幫助我的信息。

我試圖做重新上面,

AbstractMap<String, String> pair = new AbstractMap<String, String>(); 

我將能夠使用密鑰集()函數,併爲每個的get()函數拉動需要的信息去拉所需要的信息核心價值。

除了我的實例化問題,這似乎是一個非常低效的方式來獲得相同的功能,我很好奇,如果有更好的選擇。如果沒有人可以請提供一個關於如何適當地實例化AbstractMap的例子。

+1

使用'地圖'作爲參考,並實例 - '的HashMap ()'。 –

+2

如果你打算使用'Map',就像'Map pair = new HashMap ();'(或另一個像'LinkedHashMap'或'TreeMap'一樣的Map'實現) 。如果您發佈了功能要求以幫助您選擇最佳收藏,那將會更好。 –

回答

2

如果每對中的兩個字符串中的一個是唯一的,因爲您建議使用AbstractMap似乎表明,您可能想要公開一個返回Map<String,String>的API,並使用該接口的選擇實現(例如,LinkedHashMap<String,String>)。

類的用戶將能夠從Map拉動對String S按使用Map.Entry<String,String>,而不是要求每個鍵get

Map<String,String> getAllPairs() { 
    ... 
} 
... 
for (Map.Entry<String,String> pair : myClass.getAllPairs()) { 
    // You can use pair.getKey() and pair.getValue() here 
} 
0

你能不能只用一個POJO:

public class Tuple { 
    public String oneString; 
    public String otherString; 
} 

你可以讓他們的名單:

public List<Tuple> tuples = new ArrayList<Tuple>(); 

或者你可以有Collection佳:可不是嘛,可以被搜索,如果你:

@Override 
public boolean equals(Object obj) { 
     // Code to handle non-Tuples and null goes here 
     // Code to handle null oneString values goes here (if you allow that) 
     return ((Tuple)that).oneString.equals(oneString); 
} 

@Override 
public int hashCode() { 
     // handle null oneString values here 
    return oneString.hashCode(); 
}