HashSet、LinkedHashSet和TreeSet三者区别与联系

一.HashSet

特点:

1.HashSet中不能有相同的元素,可以有一个Null元素,存入的元素是无序的。

2.HashSet如何保证唯一性?

​ 1).HashSet底层数据结构是哈希表,哈希表就是存储唯一系列的表,而哈希值是由对象的hashCode()方法生成。

​ 2).确保唯一性的两个方法:hashCode()和equals()方法。

3.添加、删除操作时间复杂度都是O(1)。

4.非线程安全

二.LinkedHashSet

特点:

1.LinkedHashSet中不能有相同元素,可以有一个Null元素,元素严格按照放入的顺序排列。

2.LinkedHashSet如何保证有序和唯一性?

​ 1).底层数据结构由哈希表和链表组成。

​ 2).链表保证了元素的有序即存储和取出一致,哈希表保证了元素的唯一性。

3.添加、删除操作时间复杂度都是O(1)。

4.非线程安全

三.TreeSet

特点:

1.TreeSet是中不能有相同元素,不可以有Null元素,根据元素的自然顺序进行排序。

2.TreeSet如何保证元素的排序和唯一性?

底层的数据结构是红黑树(一种自平衡二叉查找树)

3.添加、删除操作时间复杂度都是O(log(n))

4.非线程安全

四.总结:

通过以上特点可以分析出,三者都保证了元素的唯一性,如果无排序要求可以选用HashSet;如果想取出元素的顺序和放入元素的顺序相同,那么可以选用LinkedHashSet。如果想插入、删除立即排序或者按照一定规则排序可以选用TreeSet。

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2015-2023 高行行
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信