哈希表结构:数组+链表
案例一:HashSet集合的常见使用方法
package com.collection;import java.util.HashSet;
import java.util.Iterator;/*** HashSet集合的使用* 存储结构:哈希表(数组+链表+红黑树)*/
public class Demo07 {public static void main(String[] args) {//新建集合HashSet<String> hashSet = new HashSet<>();//1添加数据hashSet.add("苹果");hashSet.add("葡萄");hashSet.add("桃子");hashSet.add("桃子");System.out.println("数据个数:"+hashSet.size());System.out.println(hashSet);//2删除数据hashSet.remove("苹果");//3遍历System.out.println("-----增强for-------");for(String str : hashSet) {System.out.println(str);}System.out.println("-----使用迭代器-------");Iterator<String> iterator = hashSet.iterator(); //方法的返回值为Iteratorwhile(iterator.hasNext()) {System.out.println(iterator.next());}//判断System.out.println(hashSet.contains("香蕉"));System.out.println(hashSet.isEmpty());}
}
案例二:重写hashCode和equals方法,实现去重功能。HashSet的存储过程就是重复依据。
重写之前的结果:
在Person类中重写:(属性和构造方法、get、set方法这里没有截图,跟之前博客中Student类相同)
再运行Demo08主函数后,结果显示无法重复添加“小王”,20:
补充:快捷键alt+enter重写hashCode和equals方法: