Java 找出一个桶里有多少把钥匙
当多个键具有相同的哈希代码时,会发生冲突。在这种情况下,键值条目以链表格式存储,映射到bucket。现在我想知道给定bucket中有多少这样的Map.Entry对。是否有任何内置java方法可以帮助我识别 bucket1-->(10,1)-->(100,2)---在这种情况下,答案是2 bucket2-->(2,1)--答案是1 巴克特3——>(3,5——>(6,10——>(9,15——>)(12,18)——回答这个问题Java 找出一个桶里有多少把钥匙,java,algorithm,data-structures,hashmap,hashtable,Java,Algorithm,Data Structures,Hashmap,Hashtable,当多个键具有相同的哈希代码时,会发生冲突。在这种情况下,键值条目以链表格式存储,映射到bucket。现在我想知道给定bucket中有多少这样的Map.Entry对。是否有任何内置java方法可以帮助我识别 bucket1-->(10,1)-->(100,2)---在这种情况下,答案是2 bucket2-->(2,1)--答案是1 巴克特3——>(3,5——>(6,10——>(9,15——>)(12,18)——回答这个问题 这方面的任何帮助都是非常好的。除非您使用集合作为地图的值,否则您将无法为特
这方面的任何帮助都是非常好的。除非您使用集合作为地图的值,否则您将无法为特定的bucket提供多个值。检查
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)
希望这能有所帮助我不认为这回答了我的问题(或者我问的问题不太清楚)。假设我有一个bucket大小为5的hashmap/hashtable。为了计算hashcode,我使用mod 5操作符作为hash函数。前5个键即1,2,3,4,5将占用存储桶1到5。当我插入键6和一些值时,它被添加到bucket 1中。因此,铲斗1的大小现在为2。这就是我要找的。我明白你的意思。我不认为这些桶的信息会被曝光。快速检查,你想要的信息在那里,只是不公开。谢谢,只是在同一页上,你指的是addEntry/createEntry方法吗?表
属性首先引起了我的注意,但你提到的方法也是相关的。他们最终修改了表