草庐IT

java - hashmap 中的 bucket 到底是什么?

最近,在一次采访中,有人问我,hashmap中的桶到底是什么?无论是数组还是数组列表还是什么?我很困惑。我知道HashMap由数组支持。那么我可以说bucket是一个容量为16的数组,开始存储hashcode,哪些链表有起始指针?我知道HashMap在内部是如何工作的,只是想知道存储桶在数据结构方面到底是什么。 最佳答案 不,存储桶是您所指的数组中的每个元素。在早期的Java版本中,每个存储桶都包含一个Map条目的链接列表。在新的Java版本中,每个存储桶都包含条目的树结构或条目的链接列表。来自Java8中的实现说明:/**Impl

java - 如何在 HashMap 中包含重复键?

这个问题在这里已经有了答案:Mapimplementationwithduplicatekeys(19个回答)关闭8年前。我需要键集中的链接和多个键。我试过这个:LinkedHashMapmap=newLinkedHashMap();map.put(-1505711364,"4");map.put(294357273,"15");map.put(-1593134417,"28");map.put(-1231165758,"45");map.put(121046798,"58");map.put(294357273,"71");map.put(-1593134417,"82");map.

java - 如何在 HashMap 中包含重复键?

这个问题在这里已经有了答案:Mapimplementationwithduplicatekeys(19个回答)关闭8年前。我需要键集中的链接和多个键。我试过这个:LinkedHashMapmap=newLinkedHashMap();map.put(-1505711364,"4");map.put(294357273,"15");map.put(-1593134417,"28");map.put(-1231165758,"45");map.put(121046798,"58");map.put(294357273,"71");map.put(-1593134417,"82");map.

java - 在 HashSet/HashMap java中找到最大的数

我想在HashSet和HashMap中找到最大的数。假设我的HashSet中有数字[22,6763,32,42,33],我想在当前的HashSet中找到最大的数字。我该怎么做?HashMap也一样。我希望你能帮助我。谢谢你。 最佳答案 您可以使用Collections.max(Collection)找出任何集合中的最大元素。同样,对于HashMap,您可以在其keySet()上使用相同的方法或values(),取决于您是想要最大键还是最大值。另外,如果你想这样,你可以使用TreeSet和TreeMap相反,它以排序的键顺序存储元素。

java - 在 HashSet/HashMap java中找到最大的数

我想在HashSet和HashMap中找到最大的数。假设我的HashSet中有数字[22,6763,32,42,33],我想在当前的HashSet中找到最大的数字。我该怎么做?HashMap也一样。我希望你能帮助我。谢谢你。 最佳答案 您可以使用Collections.max(Collection)找出任何集合中的最大元素。同样,对于HashMap,您可以在其keySet()上使用相同的方法或values(),取决于您是想要最大键还是最大值。另外,如果你想这样,你可以使用TreeSet和TreeMap相反,它以排序的键顺序存储元素。

java - 不同初始容量和负载因子的HashMap性能

这是我的情况。我正在使用两个java.util.HashMap将一些常用数据存储在运行在Tomcat上的JavaWeb应用程序中。我知道每个Hashmap的确切条目数。键将分别是字符串和整数。我的问题是,设置初始容量和负载因子的最佳方法是什么?我是否应该将容量设置为等于它将拥有的元素数量并将负载容量设置为1.0?我希望在不使用太多内存的情况下获得绝对最佳的性能。但是,我担心该表不会以最佳方式填充。使用所需的确切大小的表,是否不会发生键冲突,导致(通常很短)扫描以找到正确的元素?假设(这是一个延伸)哈希函数是整数键的简单模5,这是否意味着键5、10、15会命中同一个桶,然后导致查找填充他

java - 不同初始容量和负载因子的HashMap性能

这是我的情况。我正在使用两个java.util.HashMap将一些常用数据存储在运行在Tomcat上的JavaWeb应用程序中。我知道每个Hashmap的确切条目数。键将分别是字符串和整数。我的问题是,设置初始容量和负载因子的最佳方法是什么?我是否应该将容量设置为等于它将拥有的元素数量并将负载容量设置为1.0?我希望在不使用太多内存的情况下获得绝对最佳的性能。但是,我担心该表不会以最佳方式填充。使用所需的确切大小的表,是否不会发生键冲突,导致(通常很短)扫描以找到正确的元素?假设(这是一个延伸)哈希函数是整数键的简单模5,这是否意味着键5、10、15会命中同一个桶,然后导致查找填充他

java - 如何将 HashMap<String, ArrayList<String>> 存储在列表中?

我的hashmap将字符串存储为键,将数组列表存储为值。现在,我需要将其嵌入到列表中。也就是说,它将具有以下形式:List>>这些是我使用的声明:Map>map=newHashMap>();ArrayListarraylist=newArrayList();map.put(key,arraylist);Listlist=newArrayList();谁能帮我在列表中使用哪种方法以及如何继续将我的map存储到其中? 最佳答案 总是尝试在Collection中使用接口(interface)引用,这增加了更多的灵active。下面的代码有

java - 如何将 HashMap<String, ArrayList<String>> 存储在列表中?

我的hashmap将字符串存储为键,将数组列表存储为值。现在,我需要将其嵌入到列表中。也就是说,它将具有以下形式:List>>这些是我使用的声明:Map>map=newHashMap>();ArrayListarraylist=newArrayList();map.put(key,arraylist);Listlist=newArrayList();谁能帮我在列表中使用哪种方法以及如何继续将我的map存储到其中? 最佳答案 总是尝试在Collection中使用接口(interface)引用,这增加了更多的灵active。下面的代码有

jsp - 通过 EL 中的特定键获取 HashMap 的值而不对其进行迭代

我想从HashMap读取数据在JSP页面中使用EL,但不使用JSTL或for环形。我该怎么做? 最佳答案 只需像使用bean属性一样使用映射键:${map.key}这与map.get("key")的作用相同。如果键包含点,则通过大括号表示:${map['key.with.dots']}这与map.get("key.with.dots")的作用相同。或者如果键是另一个变量:${map[dynamicKey]}这在幕后与map.get(dynamicKey)相同。 关于jsp-通过EL中的特