如果元组的第一个元素是关键(没有其他的元组具有相同的第一个元素),你很可能需要一个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)的一个很好的例子。你很可能在寻找某种地图。 –