HashSet用法小结

来源:互联网 发布:微信猎手软件 编辑:程序博客网 时间:2024/06/04 19:11

一、HashSet介绍
此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。**此类允许使用 null 元素。**HashSet不是同步的,多个线程访问是需要通过代码保证同步
不允许有重复内容,有的话只显示一个

HashSet源码分析:

**1 构造方法:**  1public HashSet() {     map = new HashMap<>();}// 构造一个新的空 set,其底层 HashMap 实例的默认初始容量是 16,加载因子是 0.75。  2public HashSet(int initialCapacity) {        map = new HashMap<>(initialCapacity); }   3public HashSet(Collection<? extends E> c) {        map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));        addAll(c);    }   4)   HashSet(int initialCapacity, float loadFactor, boolean dummy) {        map = new LinkedHashMap<>(initialCapacity, loadFactor);//指定初始容量和加载因子    }  由源码可知道,底层还是HashMap来实现HashSet**2 **公有方法:****    1 Object clone() //返回HashSet实例浅层副本,并没有复制这些元素    2 boolean contains(Object o) //如果此 set 包含指定元素,则返回 true    3 boolean isEmpty()//  如果此 set 不包含任何元素,则返回 true。    4 boolean add(E e)//如果此 set 中尚未包含指定元素,则添加指定元素     5 boolean remove(Object o)//如果指定元素存在于此 set 中,则将其移除。    6 Iterator<E> iterator()//返回对此 set 中元素进行迭代的迭代器。     例如:      HashSet<String > hs=new HashSet<String>();      .........      .........      Iterator<String> it=hs.iterator();        while(it.hasNext()){            System.out.println(it.next());        }
0 0