HashSet
HashSet的秘密
LinkedHashSet
HashSet集合的特点:HashSet集合它是一个无序的集合,而且不允许重复
LinkedHashSet集合的特点:LinkedHashSet extends HashSet,底层是一个哈希表(数组+链表、红黑树)+链表。多了一条链表(记录元素的存储顺序),保证元素有序。
TreeSet
从本质上来说TreeMap就是一棵”红黑树”,每个Entry就是一个节点。
总结
1、不能有重复的元素;
2、具有排序功能;
3、TreeSet中的元素必须实现Comparable接口并重写compareTo()方法,TreeSet判断元素是否重复 、以及确定元素的顺序 靠的都是这个方法;
①对于Java类库中定义的类,TreeSet可以直接对其进行存储,如String,Integer等,因为这些类已经实现了Comparable接口);
②对于自定义类,如果不做适当的处理,TreeSet中只能存储一个该类型的对象实例,否则无法判断是否重复。
4、依赖TreeMap。
5、相对HashSet,TreeSet的优势是有序,劣势是相对读取慢。根据不同的场景选择不同的集合。
Java集合中List,Set以及Map等集合体系详解(史上最全)
TreeSet ------自然排序与定制排序(比较器)
【TreeSet】自然排序与比较器排序和二叉树排序《比较器排序有问题》
CopyOnWriteArraySet