哈希表中的同一个键可以有多个值吗?如果没有,你能推荐任何可以使用的类或接口(interface)吗?
最佳答案
没有。这就是哈希表的想法。
但是,您也可以使用 Map<YourKeyObject, List<YourValueObject>>
自行滚动。以及一些用于创建列表的实用方法(如果列表不存在),或者使用类似 Multimap
的方法来自 Google Collections .
示例:
String key = "hello";
Multimap<String, Integer> myMap = HashMultimap.create();
myMap.put(key, 1);
myMap.put(key, 5000);
System.out.println(myMap.get(key)); // prints either "[1, 5000]" or "[5000, 1]"
myMap = ArrayListMultimap.create();
myMap.put(key, 1);
myMap.put(key, 5000);
System.out.println(myMap.get(key)); // always prints "[1, 5000]"
请注意 Multimap
不是自制解决方案的精确等价物; Hashtable
同步其所有方法,而 Multimap
不作此类保证。这意味着使用 Multimap
如果你在多个线程上使用它,可能会给你带来问题。如果您的 map 仅在一个线程上使用,则不会有任何区别(而且您应该一直使用 HashMap
而不是 Hashtable
)。
关于java - Java中的多值哈希表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1049833/