更新时间:2022-11-01 来源:黑马程序员 浏览量:
HashSet是Set接口中的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的。下面通过一个案例演示HashSet集合的用法,如文件6-7所示。
文件6-7 Example07.java
import java.util.*; public class Example07 { public static void main (String[] args) { Hash set = new HashSet (); // 创建HashSet集合 set.add("张三"); // 向该Set集合中添加字符串 set.add("李四"); set.add("王五"); set.add("李四"); // 向该Set集合中添加重复元素 Iterator it = set.iterator (); // 获取Iterator对象 while (it.hasNext ()) { // 通过while循环,判断集合中是否有元素 Object obj = it.next (); // 如果有元素,就通过迭代器的next()方法获取元素 System.out.println (obj); } } }
在文件6-7中,第4~8行代码声明了一个HashSet集合并通过add()方法向HashSet集合依次添加了4个字符串;第9行代码声明了一个迭代器对象it;第10~13行代码是通过Iterator迭代器遍历所有的元素并且输出。从打印结果可以看出,取出元素的顺序与添加元素的顺序并不一致,并且重复存入的字符串对象“李四”被去除了,只添加了一次。
HashSet集合之所以能确保不出现重复元素,是因为它在存入元素时做了很多工作。当调用HashSet集合的add()方法存入元素时,首先调用当前存入对象的hashCode()方法获得对象的散列值,然后根据对象的散列值计算出一个存储位置。如果该位置上没有元素,则直接将元素存入,如果该位置上有元素存在,则会调用equals()方法让当前存入的元素依次与该位置上的元素进行比较,如果返回的结果为false就将该元素存入集合,返回的结果为true则说明有重复元素,将该元素舍弃。