Set

简述

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

  • AbstractSet
  • HashSet
  • TreeSet

Set的子接口
SortedSet


HashSet

image.png
    //存储数据
   private transient HashMap<E,Object> 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<E,Object> m;

    private static final Object PRESENT = new Object();

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容