HashSetLinkedHashSet和TreeSet三者区别与联系
Posted 享叔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashSetLinkedHashSet和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。
以上是关于HashSetLinkedHashSet和TreeSet三者区别与联系的主要内容,如果未能解决你的问题,请参考以下文章
HashSetLinkedHashSet和TreeSet三者区别与联系
数据结构 - HashSetLinkedHashSet 二合一
java中set接口哈希表哈希值HashSetLinkedHashSet方法的可变参数
java中set接口哈希表哈希值HashSetLinkedHashSet方法的可变参数