前言:特别注意,Set继承至Collection接口,Set接口的实现有:HashSet、LinkedHashSet、TreeSet。
Set:唯一
HashSet:
性质:底层数据结构是哈希表,依赖hashCode()和equals()来保证元素的唯一性。允许存在null数据。
优点: 插入数据最快。
缺点:无序,线程不安全。
LinkedHashSet:
性质:底层数据结构是链表和哈希表。(FIFO插入有序,唯一) ,由链表保证元素有序,由哈希表保证元素唯一。允许存在null数据。
优点: 有序,FIFO。
缺点:插入数据较慢,线程不安全。
TreeSet:
性质:底层数据结构是红黑树。底层数据结构是红黑树。使用自然排序或比较器排序来保证元素排序,根据比较的返回值是否是0来保证元素唯一性。不允许存在null数据,否则会报NullPointerException。
优点: 有序。
缺点:插入数据最慢,线程不安全。