Java HashSet 散列集合


HashSet

  • 扩展 AbstractSet 并实现 Set 接口,创建一个使用散列表存储的类集,而散列表(哈希表)通过被称作散列法的机制来存储信息;
  • 散列法:一个关键字的信息内容被用来确定唯一的一个值,称为散列码(hashCode),散列码被用来当做与关键字相连的数据的存储下标,关键字到其散列码是自动执行的,因此看不到散列码本身,代码也不能直接索引散列表,大的集合也能使 add(),contains(),remove(),size() 等方法的运行时间不变;
  • HashSet 调用元素时会调用 hashCode() 方法,获得其哈希码(hashCode),根据哈希码确定在集合中的存储位置,提高了存储速度;
  • HashMap 对象的 key、value 值均可为 null,但允许最多一个值为 null 的元素;
  • HashSet 不能确定元素的排列顺序,通常无法干预排列集合的创建,如果要排序,建议使用 TreeSet

1. 构造方法

构造方法 说明
HashSet() 构造一个空的 Set 集合
HashSet(Collection c) 构造一个包含指定集合的元素的集合
HashSet(int capacity) 构造一个指定初始容量的 Set 集合
HashSet(int capacity, float fillRatio) 指定容量与填充比(又称加载容量),填充比必须介于 0.0 与 1.0 之间,决定散列集合向上调整大小之前有多少被填满,当元素个数大于 散列表容量 x 填充比 时,散列集合被扩大,默认值是 0.75

2. 去除重复元素的原理

HashSet去重原理


3. 类的使用

import java.util.HashSet;
import java.util.Iterator;

public class test {
    public static void main(String[] args) {
        HashSet hs = new HashSet();
        hs.add("12");
        hs.add("34");
        hs.add("56");
        hs.add("12");
        System.out.println(hs.size());//3
        Iterator it = hs.iterator();
        while (it.hasNext()) {
            System.out.print(it.next()+" ");
        }
    }
}

4. LinkedHashSet

详细:LinkedHashSet 链式哈希集合

发布了59 篇原创文章 · 获赞 60 · 访问量 1579

猜你喜欢

转载自blog.csdn.net/Regino/article/details/104549599