HashSet、LinkedHashSet和TreeSet三者区别与联系
2017-03-26 19:34
761 查看
一.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。相关文章推荐
- HashSet、LinkedHashSet和TreeSet三者区别与联系
- 【java提高】---HashSet 与TreeSet和LinkedHashSet的区别
- HashSet 与TreeSet和LinkedHashSet的区别
- HashSet 与TreeSet和LinkedHashSet的区别
- Java中Hashset、HashMap、ArrayList、LinkedList、Vector之间的联系与区别
- Java中Hashset、HashMap、ArrayList、LinkedList、Vector之间的联系与区别
- 关于HashSet、LinkedHashSet和TreeSet以及Comparable和Comparator
- Java集合框架:Set(HashSet,LinkedHashSet,TreeSet)
- List、Map、Set的理解(LinkedList和ArrayList、Vector和ArrayList、HashMap和HashTable和HashSet区别与使用)
- Java数据结构与算法之数据结构-逻辑结构-集合(七)------集合之Set接口和HashSet和TreeSet、LinkedHashSet实现类总结
- ArrayList.LinkedList.Vector三者之间的区别与联系
- java.util中ArrayList、LinkedList以及Vector它们三者的区别与联系
- hashSet linkedHashSet treeSet 一点区别
- HashSet与TreeSet去重的区别
- List、Map、Set的理解(LinkedList和ArrayList、Vector和ArrayList、HashMap和HashTable和HashSet区别与使用)
- HashSet TreeSet LinkedHashSet 区别
- JAVA菜鸟入门(17) 有排序的TreeSet和无排序的HashSet, LinkedHashSet
- Java集合中的ArrayList LinkedList HashSet TreeSet HashMap TreeMap 的区别
- HashSet和TreeSet有什么区别?
- ArrayList、LinkedList和Vector三者区别与联系