比如 key 用 String 类型或者 Class 类型,哪个性能更好?
字符串长度多长冲突概率小而且性能又适中?
比如 key 用 String 类型或者 Class 类型,哪个性能更好?
字符串长度多长冲突概率小而且性能又适中?
键key
的主要作用是调用hashCode
方法以计算位于数组的位置,基于性能和安全考虑,最好用不可变简单对象
因为复杂对象正常的写法都是基于每个属性分别调用hashCode
然后再复杂累加(可能导致性能问题),而对象不可变保证了 PUT
操作的key值GET
的时候能得到一致的hash,也就保证了能GET
到值,对象变了可能会导致GET
不到(hash变了,table数组的位置可能发生变化)
至于字符串长度,一般还是以满足业务需求为止就行了,比如涉及一个Map<String,User>
,key是用户的账号,你说你研究什么长度。。
String,Long,Intege
等作为Map的key附简单的hashCode写法
public class Test {
private String name;
private String address;
public int hashCode() {
int result = name != null ? name.hashCode() : 0;
result = 31 * result + (address != null ? address.hashCode() : 0);
return result;
}
}
4 回答1.1k 阅读✓ 已解决
4 回答1.1k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
2 回答691 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.6k 阅读
2 回答1.3k 阅读
小于2的32-2