java集合之HashSet哈希SET基础

hashSet实现set接口、serializable、cloneable接口。不允许有重复值,但可以null,不保证与插入顺序一致。

HashSet迭代的时间与HashSet实例的大小(元素的数量)和底层HashSet实例(桶的数量)的“容量”的和成比例。因此,若迭代性能很重要,不要将初始容量设置的太低和加载因子设置的太小。当哈希表中元素数量大于当前容量和装载因子的乘积时,则扩容为大约当前容量的两倍。

其中数据对象必须实现hashCode()函数,HashSet线程不同步,使用Collections.synchronizedSet包装。

构造函数:

HashSet()默认初始大小16,转载因子0.75

HashSet(int initialCapacity)

HashSet(int initialCapacity,float loadFactor)

HashSet(Collection C)

常用方法:

boolean add(E e)

void clear()

boolean contains(Object o)

boolean remove(Object o)

示例:

package test;

import java.util.*;

 

/**

 * @author Administrator

 *

 */

public class TestHashSet {

    public static void main(String args[]){

        HashSet<String> hash=new HashSet<String>();

        LinkedList<String> list=new LinkedList<String>();

        list.add("list1");

        list.add("list2");

        list.add("list3");

        hash.add("哈希set1");

        hash.add("哈希set2");

        hash.add("哈希set3");

        hash.add("哈希set4");

        hash.add("哈希set5");

        hash.add("哈希set6");

        hash.addAll(list);//添加到哈希set中的list并非作为单独元素存在,[list1, 哈希set6, list3, list2, 哈希set3, 哈希set2, 哈希set5, 哈希set4, 哈希set1]

        System.out.println(hash);

        hash.remove("哈希set3");

        System.out.println(hash);

        Iterator<String> it= hash.iterator();

        while(it.hasNext()){

            System.out.println(it.next());

        }

       

    }

}

HashSet实际建立在HashMap的基础之上。map的键为set的元素,map的值为常量。

public boolean add(E e){

    return map.put(e,PRESENT) == null;

}

猜你喜欢

转载自www.cnblogs.com/perfumeBear/p/9501016.html