Java 找出一个桶里有多少把钥匙

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。现在我想知道给定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方法吗?
属性首先引起了我的注意,但你提到的方法也是相关的。他们最终修改了