当多个键具有相同的哈希码时,则发生冲突。在这种情况下,键值条目以链表格式存储映射到存储桶。现在我想知道给定存储桶有多少这样的Map.Entry对。是否有任何内置的java方法可以帮助我识别?
bucket1 ----> (10,1)---> (100,2)---在这种情况下答案是2。
bucket2 ----> (2,1)----答案是1.
bucket3 ----> (3,5)---> (6,10)---> (9,15)---> (12,18)----在这种情况下回答4。
对此的任何帮助都会很棒。
答案 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}}
希望有所帮助