Java HashSet的存储原理

首先他会判断该对象的hash值在hashset集合中是否存在(自定义对象要自己实现hashcode方法和equals方法,String等已经实现不需要自己再实现),如果不存在则存入集合(这个时候就用到它的数据结构了,数组!!!其实存入的就是数组),如果存在相同的hash值,则判断equals方法,相同就不存,如果不同,则证明,该集合中存在与该对象相同的hash值但是值不同的对象,就会再判断它是否有树结点,有就转换为红黑树,否则,就存入链表,如果链表值大于8就会转换为红黑树,下边是它的流程图:

猜你喜欢

转载自blog.csdn.net/lezeqe/article/details/120465060