java HashSet集合去除按規定相同的物件
阿新 • • 發佈:2019-01-29
public class Person{
private String name;
private int age;
}
setter和getter方法已省略
測試類中:
HashSet<Person> hs = new HashSet<>();
hs.add(new Person("a",1));
hs.add(new Person("a",1));
hs.add(new Person("b",2));
hs.add(new Person("c",3));
如果姓名和年齡欄位相同就表明為同一個物件 重寫了hashCode()方法就可以執行Person中重寫的equals()方法。
Person類中重寫兩個方法(ME自動自成 )
@Override public int hashCode() { /** * final int prime = 31; * 1,31是一個質數 * 2,31不大不小 * 3,2^5 - 1 = 31 */ final int prime = 31; int result = 1; result = prime * result + age; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Person other = (Person) obj; if (age != other.age) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; }