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的主要内容,如果未能解决你的问题,请参考以下文章

Java之集合

java基础笔记----集合之list集合

Java 集合系列01之 总体框架

java多线程系类:JUC集合:01之框架

java之集合概述

面试之java集合