去除集合中自定义对象(如Person类,属性包括姓名和年龄)的重复值(对象的成员变量值都相同)。
package Exampl1;
import java.io.*;
import java.util.*;
public class Demo02 {
public static void main(String[] args) {
HashSet hs=new HashSet();
Person p1=new Person("张三",18);
Person p2=new Person("李四",17);
Person p3=new Person("李四",18);
Person p4=new Person("张三",18);
Student stu1=new Student("小明");
hs.add(p1);
hs.add(p2);
hs.add(p3);
hs.add(p4);
hs.add(stu1);
System.out.println(hs);
}
}
class Person{
private String name;
private int age;
public Person(String name,int age) {
this.age=age;
this.name=name;
}
@Override
public String toString() {
return "Person[name="+name+",age="+age+"]";
}
@Override
public int hashCode() {
return name.hashCode()+this.age*12;
}
@Override
public boolean equals (Object obj) {
if(this==obj) {
return true;
}
if(!(obj instanceof Person)) {
return false;
}
Person p=(Person)obj;
return this.name.equals(p.name) && this.name==p.name;
}
}
class Student{
private String name;
public Student(String name) {
this.name=name;
}
@Override
public String toString() {
return this.name;
}
@Override
public int hashCode() {
return name.hashCode();
}
@Override
public boolean equals (Object obj) {
if(this==obj) {
return true;
}
if(!(obj instanceof Student)) {
return false;
}
Student stu=(Student)obj;
boolean b=this.name.equals(stu.name);
return b;
}
}