如果元組的第一個元素是關鍵(沒有其他的元組具有相同的第一個元素),你很可能需要一個Map ...
注:的重複鍵,這一次沒有按」工作得很好:只會保留一個!
Map<String, String> myMap = new HashMap<>();
myMap.put("a", "bb");
//...
String result = myMap.get("a");
//result will be "bb"
如果第一個元素是不是關鍵,所以有可能是("l","mm")
和("l","ee")
過,那麼它是一個比較棘手:
// for clarity, a helper method
private static <K,V> void add(Map<K, Set<V>> mapToAdd, K key, V value) {
Set<V> innerSet = mapToAdd.get(key);
if(innerSet==null) {
innerSet = new HashSet<>();
mapToAdd.put(key, innerSet);
}
innerSet.add(value);
}
//...
Map<String, Set<String>> myMap = new HashMap<>();
add(myMap, "l", "mm");
add(myMap, "l", "ee");
// for searching, we also need a helping method:
private static <K,V> boolean find(Map<K, Set<V>> mapToFind, K key, V value) {
boolean found = false;
Set<V> setToFind = mapToFind.get(key);
if(setToFind!=null) {
found = setToFind.contains(value);
}
return found;
}
// result true:
System.out.println(find(myMap,"l","mm"));
// result true:
System.out.println(find(myMap,"l","ee"));
// result false:
System.out.println(find(myMap,"l","mddddm"));
注:如果有完整的副本,這一個只保留其中一個!
這是[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)的一個很好的例子。你很可能在尋找某種地圖。 –