标签:col 数据结构 使用 返回 返回值 hash exce 数据 排序
Set 无序,唯一
HashSet
底层数据结构是哈希表。(无序,唯一)
如何来保证元素唯一性?
1.依赖两个方法:hashCode()和equals()
LinkedHashSet
底层数据结构是链表和哈希表。(FIFO插入有序,唯一)
1.由链表保证元素有序
2.由哈希表保证元素唯一
TreeSet
底层数据结构是红黑树。(唯一,有序)
1. 如何保证元素排序的呢?
自然排序
比较器排序
2.如何保证元素唯一性的呢?
根据比较的返回值是否是0来决定
三者都不是线程安全的,如果要使用线程安全可以Collections.synchronizedSet()
HashSet插入数据最快,其次LinkHashSet,最慢的是TreeSet因为内部实现排序
排序 : HashSet不保证有序,LinkHashSet保证FIFO即按插入顺序排序,TreeSet安装内部实现排序,也可以自定义排序规则
null : HashSet和LinkHashSet允许存在null数据,但是TreeSet中插入null数据时会报NullPointerException、
标签:col 数据结构 使用 返回 返回值 hash exce 数据 排序
原文地址:https://www.cnblogs.com/ywblogs/p/11978668.html