Java 中的多值哈希表

2022-09-01 16:37:07

是否可以在哈希表中为同一键设置多个值?如果没有,你能建议任何可以使用的类或接口吗?


答案 1

不。这就是哈希表的概念。

但是,您可以使用一些实用程序方法来创建列表(如果不存在),也可以使用Google Collections中的Multimap之类的方法。Map<YourKeyObject, List<YourValueObject>>

例:

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]"

请注意,这不是家庭烘焙溶液的完全等价物;Hashtable同步其所有方法,但不做这样的保证。这意味着,如果在多个线程上使用 a,则使用 可能会给您带来问题。如果您的地图仅在一个线程上使用,则不会有任何区别(您应该使用HashMap而不是无论如何)。MultimapMultimapMultimapHashtable


答案 2

哈希表的值为对象,因此您可以存储列表