前言:学习Set之前,如果你对List没有充分的了解,那就先学一波List吧!
从List我们知道它是Collection的子接口,也就是对List做了进一步的封装,那他也有了自己的特点。有序的集合List,元素可以重复。可以有null。
那么Set呢?
让我们开一波Set车吧!
Set接口
简单介绍:Set接口是Collection的接口,是无序的Set集合且集合内元素不能重复。常用的Set实现类:
HashSet、LinkedHashSet、TreeSet
1.HashSet:
- 特点:基于HashMap进行存储。遍历时不保证顺序,并且不保证下次遍历的顺序和之前一样。HashSet允许null元素。
- 与HashMap比:HashSet的集合就是HashMap的Key的集合,然后HashMap的val默认都是PRESENT。HashMap的定义即是key不重复的集合。使用HashMap实现,这样HashSet就不需要再实现一遍。所以所有的add,remove等操作其实就是HashMap的add、remove操作,遍历操作其实就是HashMap的keySet的操作。
2.LinkedHashSet:
- 特点:LinkedHashSet相对于HashSet来说就是一个可以保持顺序的Set集合。HashSet是无序的,LinkedHashSet会根据add、remove这些操作的顺序在遍历时返回固定的集合顺序。这些顺序不是元素大小的顺序,而是可以保持2次遍历的顺序是一样的。
- 与LinkedHashMap比:L