Set

简述

Set是一个接口类,提供了一个Set基本方法的声明。
Set的实现类

  • AbstractSet
  • HashSet
  • TreeSet

Set的子接口
SortedSet


HashSet

image.png
    //存储数据
   private transient HashMap map;

    // Map的value值
    private static final Object PRESENT = new Object();

HashSet通过HashMap的key来确保set中元素的唯一性。内部通过HashMap来存储。所以它对应的contain、add、remove方法都是用过对map的操作。使用委托模式,好处在于需要修改JDK中的与Hash有关的方法时只需要修改HashMap的实现。


TreeSet

image.png
  //使用TreeMap
   private transient NavigableMap m;

    private static final Object PRESENT = new Object();

如何实现排序的?
通过TreeMap来实现排序,要求Key必须实现Comparator接口,通过Comparator来判断大小来排序。
为什么需要实现NavigableSet接口
因为当前是一个TreeSet提供了有序的排列,NavigableSet中的接口的方法是一些导航方法。提供了许多快速查询的方法。SortedSet提供了基本有序Set的方法。

你可能感兴趣的:(Set)