4.29Java Set接口

4.29Java Set接口

Set接口的特点

  • Set接口继承了Collection接口---有Collection当中的所有方法,没有新增的方法

  • 没有顺序、不可重复--->核心要点

  • Set当中没有索引,只能遍历查找数据

  • 不允许加入重复的元素,新元素如果和Set中某个元素通过equals方法对比为true,则不可加入

  • Set中只能放入一个null元素,不能多个

  • HashSet和TreeSet使用较多

HashSet的底层源码

特点:

  • HashSet采用哈希算法实现,底层是用HashMap实现

  • 查询效率和增删效率都比较高

public class HashSet<E> implements Set<E>,Cloneable,java.io.Serializable{
   
   private transient HashMap<E,Object>map;
   
   private static final Object PRESENT = new Obejct();
   
   public HashSet(){
       map = new HashMap<E,Object>();
  }
   
   public boolean add(E e){
       return map.put(e,PRESENT) == null;
  }
}

实现排序的关键在于他的add方法当中返回值是刚加入的e元素,然后Value返回的源码里面定义的Object对象

实际上add添加的都是key,HashSet是一个Map

 

上一篇:HashSet底层存储原理


下一篇:Python内置函数(64)——tuple