如果是需要对我们自定义的对象去重,就需要我们重写 hashCode 和 equals 方法
package com.huang;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
public class Test {
public static void main(String[] args) {
User u = new User(10,"张三");
User u2 = new User(10,"张三");
User u3 = new User(10,"里斯");
Set<User> set = new HashSet<>();
set.add(u);
set.add(u2);
set.add(u3);
for (User user : set) {
System.out.println(user.age + user.name);
}
}
private static class User {
String name;
Integer age;
public User(){
}
public User(Integer age, String name){
this.age = age;
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return Objects.equals(name, user.name) &&
Objects.equals(age, user.age);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
}
执行结果如下,去重成功
原文:https://www.cnblogs.com/huangpeideng/p/13624049.html