使用HashSet去重需确保元素正确实现hashCode和equals方法,添加时自动忽略重复元素,适用于基本类型和自定义对象,如Person类重写这两个方法后可实现内容去重;也可用于List去重,但不保证顺序,重复元素被自动去除。

在Java中使用HashSet去重元素非常简单,因为HashSet本身不允许存储重复的元素。当你尝试添加一个已经存在的元素时,HashSet会自动忽略这个操作,保持集合的唯一性。
1. 创建HashSet并添加元素
通过创建一个HashSet对象,并调用其add()方法添加元素,重复的元素不会被加入。
- HashSet基于HashMap实现,元素作为key存放,null也可以作为元素
- add()方法返回boolean类型:如果元素不存在则添加成功,返回true;否则返回false
示例代码:
Set2. 去重自定义对象
如果想对自定义对象去重,必须正确重写equals()和hashCode()方法,否则即使内容相同也会被视为不同对象。
立即学习“Java免费学习笔记(深入)”;
- HashSet判断重复的依据是:先比较hashCode(),再调用equals()
- 未重写这两个方法时,默认使用Object类的实现,比较的是引用地址
示例:Person类去重
class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof Person)) return false; Person person = (Person) o; return age == person.age && Objects.equals(name, person.name); } @Override public int hashCode() { return Objects.hash(name, age); } } Set3. 利用HashSet对List去重
可以将已有列表中的元素放入HashSet,快速去除重复项。
List注意:HashSet不保证元素顺序。如果需要保持插入顺序,可使用LinkedHashSet。
基本上就这些。HashSet是去重最常用的工具,关键是理解其依赖hashCode和equals机制来判断重复。










