JDK8的HashMap用的链表+红黑树解决冲突,红黑树作为查找树,优化链表的查询效率,每个节点存对应object的hash,根据hash构建树,但是hash冲突,本身就是因为hash一样,但对象确实不一样导致的,一堆hash一样的object,怎么根据hash建树?hash都相等了,这个树咋建的?
看了源码,System下有个static方法,叫identityHashCode。
这个会生成唯一哈希,用内存地址保证唯一性。
这里写了用法,当不同对象的hashcode方法返回的hash一致时使用这个,根据这个算hash的,因为跟内存地址有关,所以是个native方法。
网友评论