查找存储桶中有多少个密钥

时间:2014-11-04 01:35:47

标签: java algorithm data-structures hashmap hashtable

当多个键具有相同的哈希码时,则发生冲突。在这种情况下,键值条目以链表格式存储映射到存储桶。现在我想知道给定存储桶有多少这样的Map.Entry对。是否有任何内置的java方法可以帮助我识别?

bucket1 ----> (10,1)---> (100,2)---在这种情况下答案是2。

bucket2 ----> (2,1)----答案是1.

bucket3 ----> (3,5)---> (6,10)---> (9,15)---> (12,18)----在这种情况下回答4。

对此的任何帮助都会很棒。

1 个答案:

答案 0 :(得分:2)

除非您使用集合作为地图的值,否则您将无法为特定存储桶提供多个值。检查put()

的文档中import java.util.Arrays; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; public class Playground { public static void main(String[] args) { Map<Integer, List<Pair>> map = new LinkedHashMap<Integer, List<Pair>>(); map.put(1, Arrays.asList(new Pair(10, 1) , new Pair(100, 2))); map.put(2, Arrays.asList(new Pair(2, 1))); map.put(3, Arrays.asList(new Pair(3, 5), new Pair(6, 10), new Pair(9, 15), new Pair(12, 18))); for (Map.Entry<Integer, List<Pair>> entry : map.entrySet()) { System.out.println(String.format("Bucket %d has %d item(s)", entry.getKey(), entry.getValue().size())); } } } class Pair { Integer x; Integer y; Pair(Integer x, Integer y) { this.x = x; this.y = y; } } 将执行的操作

使用列表作为地图的值,您可以尝试以下操作:

Bucket 1 has 2 item(s)
Bucket 2 has 1 item(s)
Bucket 3 has 4 item(s)

您的输出将如下:

{{1}}

希望有所帮助