Java集合之Set
Posted 32584992
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java集合之Set相关的知识,希望对你有一定的参考价值。
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、
以上是关于Java集合之Set的主要内容,如果未能解决你的问题,请参考以下文章