Set接口:

存储无序、不可重复的数据 

    Hashset:作为Set接口的主要实现类:线程不安全的;可以存储null值

        linkedHashSet:作为HashSet的子类:遍历其内部数据时,可以按照添加的顺序遍历。

    TreeSet:可以按照添加对象的指定属性,进行排序;

set存储时,初始化16长度的数组;

无序性:不等于随机性。存储的数据在底层数组中并非按照数组索引的顺序添加,而是根据

数据的哈希值来

不可重复性:保证添加的元素按照equals()判断时,不能返回true.即:相同的元素只能添加一个。

Map

Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键对象和一个值对象。其中,键对象不允许重复,而值对象可以重复,并且值对象还可以是 Map 类型的,就像数组中的元素还可以是数组一样。

Map 接口主要有两个实现类:HashMap 类和 TreeMap 类。其中,HashMap 类按哈希算法来存取键对象,而 TreeMap 类可以对键对象进行排序。

HashMap
基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)除实现了Map接口外还实现了Cloneable,Serializable,继承了AbstractMap抽象类
此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
特点:
键无序,唯一,类似于Set集合
值有序,可重复,类似于List
底层数据结构是哈希表,保证键唯一
允许键为null,值为null

LinkedHashMap

  1. 实现了Map接口,底层是依赖于哈希表和链表的,具有可预知的遍历顺序
  2. 哈希表保证唯一性,保证的是Key的唯一性
  3. 链表保证有序,保证的是键的有序(存储和取出顺序一致)
  4. TreeMap
    HashMap的key值是无序的,而实现了SortedMap接口的具体实现类TreeMap会对key值进行排序
    TreeMap底层基于红黑树
    TreeMap实现排序有两种方式
    (一)传入的key值实现了Comparable接口(String,Integer等都已经实现了Comparable接口,因此可以直接用)
    (二)创建TreeMap集合的时候指定比较器Comparator

TreeMap
基于红黑树(Red-Black tree)的 NavigableMap 实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,
具体取决于使用的构造方法。
特点:
键可排序,唯一,
值有序,可重复,类似于List
底层数据结构是自平衡的二叉树,可排序
排序方式类似于TreeSet,分为自然排序和比较器排序,具体取决于使用的构造方法