java之HashSet

mac2026-01-14  8

一.定义: 1.HashSet集合中的元素是通过hash值来比较是否相同 2.集合通过元素的hashCode和equals方法来比较两个元素是否相同, 不同就存入, 相同不存入 3.元素存入的位置是不可知的,和存入的顺序无关

二.存储原理

1.HashSet最终会存入数组中, 只是根据元素的Hash值来确定存入的位置 2.元素的hash值 (元素的hash值 >>> 16) & (数组的长度-1) 3.HashSet中不是直接存入我们给定的元素, 而是用集合中的一个内部类封装我们存入的元素, 4.如果两个不同的元素根据不同的Hash值计算出了同一个标值,那么都能存进去 三.构造方法

1.HashSet() 构造出一个新的集合, 底层数组默认的初始容量是16(扩容一倍),加载因子是0.75 2.加载因子: 集合中的数组可用的 3.角标值得可选范围越小,计算出重复角标值得概率就越高 4.HashSet(Collection<? extends E> c) 构造一个包含指定collection中元素的新set 四.常用方法

boolean add( E e) 如果此set集合中尚未包含指定元素,则添加指定元素 boolean remove(Object o) 移除某个元素 int size() 获取集合的长度 五.需求: 去除ArrayList集合中的重复元素

public static void main(String[] args) { ​ ArrayList<String> a = new ArrayList<>(); a.add("a"); a.add("b"); a.add("c"); a.add("b"); a.add("a"); HashSet<String> h = new HashSet<>(a); System.out.println(h); }
最新回复(0)