-
HashSet
1.底层数据结构是哈希表(是一个元素为链表的数组) + 红黑树
2.实现Set接口
3.不保证迭代顺序
4.允许元素为null
5.底层实际上是一个HashMap实例
6.非同步
7.初始容量非常影响迭代性能(如果看重迭代性能,不要将初始值设的太高)
-
TreeSet
1.底层数据结构是红黑树(是一个自平衡的二叉树)
2.实现NavigableSet接口
3.可以实现排序功能
4.底层实际上是一个TreeMap实例
5.非同步
-
LinkedHashSet
1.底层数据结构由哈希表(是一个元素为链表的数组)和双向链表组成。
2.迭代是有序的
3.允许为null
4.底层实际上是一个HashMap+双向链表实例(其实就是LinkedHashMap)…
5.非同步
6.性能比HashSet差一丢丢,因为要维护一个双向链表
7.初始容量与迭代无关,LinkedHashSet迭代的是双向链表
网友评论