重写equals和HashCode方法进行元素去重
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
/**
* @author lzy
*/
public class Main {
public static void main(String[] args) {
Set<Animal> set = new HashSet<>();
set.add(new Animal(1, 18, "大象", "公"));
set.add(new Animal(2, 12, "蚂蚁", "公"));
set.add(new Animal(3, 11, "熊猫", "公"));
set.add(new Animal(4, 13, "老虎", "公"));
set.add(new Animal(5, 6, "狮子", "母"));
set.add(new Animal(5, 6, "狮子", "母"));
System.out.println(set.size());
//增强for循环
for (Animal animal : set) {
System.out.println(animal);
}
}
}
class Animal {
int id, age;
String name, gender;
public Animal(int id, int age, String name, String gender) {
this.id = id;
this.age = age;
this.name = name;
this.gender = gender;
}
@Override
public String toString() {
return "Animal{" +
"id=" + id +
", age=" + age +
", name='" + name + '\'' +
", gender='" + gender + '\'' +
'}';
}
//重写equals和hashCode方法进行元素去重,当所有元素都相同时被认定为同一元素进行去重
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Animal animal = (Animal) o;
return id == animal.id && age == animal.age && Objects.equals(name, animal.name) && Objects.equals(gender, animal.gender);
}
@Override
public int hashCode() {
return Objects.hash(id, age, name, gender);
}
}