JAVA基础进阶学习(7)--HashSet 、LinkedeHashSet 和 TreeSet

HashSet底层原理:

 注意:

自定义的类要想使用hashset集合,必须重写hashCode() 和equals()方法!

hashCode() 方法每次计算位置都要调用一次;

equals()方法只有在冲突的时候才调用;

 

 不同类型底层的hashCode()方法

 

 如何减少hash冲突

1、将主数组长度变大;

2、优化计算位置的函数;

 

 set的对比

HashSet 是唯一的(元素不重复)且无序的;

LinkedeHashSet 有序,是按照放入的顺序输出的;

TreeSet 无序(没有按照输入顺序输出),有序(按照从大到小的顺序输出),唯一;

 

TreeSet 底层原理:二叉树(红黑树);自定义的类放入集合中,要实现内部比较器或者外部比较器

 

 

内部比较器:

 

 中文比较规则:

 

 

 

 外部比较器:

1.

 

 

 

 2.匿名内部类

 

posted on 2021-07-01 16:43  桃之夭夭*  阅读(48)  评论(0)    收藏  举报

导航