Update Appendix-Understanding-equals-and-hashCode.md

This commit is contained in:
Joe
2019-11-23 11:58:27 +08:00
committed by GitHub
parent 2e7fbef62a
commit 9d10fdb77b

View File

@@ -804,7 +804,7 @@ public class StringHashCode {
对于String而言hashCode() 明显是基于String的内容的。
因此要想使hashCode() 实用,它必须速度快,并且必须有意义。也就是说,它必须基于对象的内容生成散列码。记得吗,散列码不必是独一无二的(应该更关注生成速度,而不是唯E但是通过hashCode() 和equals() ,必须能够完全确定对象的身份。
因此要想使hashCode() 实用,它必须速度快,并且必须有意义。也就是说,它必须基于对象的内容生成散列码。记得吗,散列码不必是独一无二的(应该更关注生成速度,而不是唯一性),但是通过 hashCode() 和 equals() ,必须能够完全确定对象的身份。
因为在生成桶的下标前hashCode()还需要做进一步的处理所以散列码的生成范围并不重要只要是int即可。
@@ -998,7 +998,7 @@ Rat Fuzzy
我们有可能手动调优HashMap以提高其在特定应用程序中的性能。为了理解调整HashMap时的性能问题一些术语是必要的
- 容量Capacity表中存储的桶数量。
-容量Initial Capacity当表被创建时桶的初始个数。 HashMap 和 HashSet 有可以让你指定初始容量的构造器。
-容量Initial Capacity当表被创建时桶的初始个数。 HashMap 和 HashSet 有可以让你指定初始容量的构造器。
- 个数Size目前存储在表中的键值对的个数。
- 负载因子Load factor通常表现为 $\frac{size}{capacity}$。当负载因子大小为 0 的时候表示为一个空表。当负载因子大小为 0.5 表示为一个半满表half-full table以此类推。轻负载的表几乎没有冲突因此是插入和查找的最佳选择但会减慢使用迭代器进行遍历的过程。 HashMap 和 HashSet 有可以让你指定负载因子的构造器。当表内容量达到了负载因子,集合就会自动扩充为原始容量(桶的数量)的两倍,并且会将原始的对象存储在新的桶集合中(也被称为 rehashing