Java HashMap与HashSet的关系
HashSet和HashMap之间的关系是什么 : 容量(16)和负载系数(0.75) “负荷系数”是什么意思? 提前谢谢 HashSet和HashMap之间的关系是什么 关系是每个Java HashMap与HashSet的关系,java,hashmap,hashset,Java,Hashmap,Hashset,HashSet和HashMap之间的关系是什么 : 容量(16)和负载系数(0.75) “负荷系数”是什么意思? 提前谢谢 HashSet和HashMap之间的关系是什么 关系是每个HashSet内部都有一个私有的HashMap。(在Java 7版本中,值是私有的对象实例…) “负荷系数”是什么意思 术语“负载系数”在forHashMap中定义。你可以在那里读到。(这就是它的写作目的……) 参考: 源代码;e、 g HashSet是根据HashMap实现的: 这个类实现了Set接口,由一个哈希
HashSet
内部都有一个私有的HashMap
。(在Java 7版本中,值是私有的对象
实例…)
“负荷系数”是什么意思
术语“负载系数”在forHashMap
中定义。你可以在那里读到。(这就是它的写作目的……)
参考:
- 源代码;e、 g
HashSet
是根据HashMap
实现的:
这个类实现了Set
接口,由一个哈希表(实际上是一个HashMap
实例)支持
荷载系数在以下章节中解释:
HashMap实例有两个影响其性能的参数:初始容量和负载因子。容量是哈希表中的存储桶数,初始容量只是创建哈希表时的容量。负载因子是在自动增加哈希表容量之前允许哈希表达到的满度的度量。当哈希表中的条目数超过加载因子和当前容量的乘积时,哈希表将被重新格式化(即,重建内部数据结构),以便哈希表的存储桶数大约是存储桶数的两倍
作为一般规则,默认负载系数(.75)在时间和空间成本之间提供了良好的折衷。较高的值会减少空间开销,但会增加查找成本(反映在HashMap类的大多数操作中,包括get和put)。在设置初始容量时,应考虑map中的预期条目数及其负载系数,以尽量减少再灰化操作次数。如果初始容量大于最大入口数除以负载系数,则不会发生再灰化操作
来自HashSet的源代码
public HashSet(Collection<? extends E> c) {
map = new HashMap<E,Object>(Math.max((int) (c.size()/.75f) + 1, 16));
addAll(c);
}
public HashSet(CollectionYou阅读了javadoc for HashSet,其中谈到了它使用的HashMap的加载因子。为什么不去阅读javadoc of HashMap?加载因子显然在这里有描述。@JBNizet感谢您的建议:)。请把线关上。
public HashSet(Collection<? extends E> c) {
map = new HashMap<E,Object>(Math.max((int) (c.size()/.75f) + 1, 16));
addAll(c);
}