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