java《set集合新增物件》
阿新 • • 發佈:2020-12-21
在hashSet集合中新增三個person物件,把姓名相同的人當做同一個人,禁止重複新增
person類中定義name和age屬性,重寫hashCode()方法和equals()方法。
package test1;
import java.text.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
HashSet hashSet = new HashSet();
Person p1 = new Person("Jack",25);
Person p2 = new Person("Rose",23);
Person p3 = new Person("Jack",27);
hashSet.add(p1);
hashSet.add(p2);
hashSet.add(p3);
for(Object obj:hashSet) {
Person p = (Person) obj;
System.out.println(p.name + ":" + p.age);
}
}
}
class Person{
String name;
int age;
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public int hashCode() {
return name.hashCode();
}
//重寫equals方法中傳入物件的過載方法
public boolean equals(Object obj) {
//地址相同表示是同一個物件
if (this == obj) {
return true;
}
//傳入的物件為空不是同一個物件
if (obj == null) {
return false;
}
//判斷傳入的物件和該類是不是同一個物件
if(!(obj instanceof Person)){
return false;
}
//把object型別轉換為person型別
Person p = (Person) obj;
//比較兩個物件的屬性值是否相等
if(p.name.equals(this.name)){
//如果要比較多個屬性值可以使用if巢狀if
return true;
}
//預設返回false
return false;
}
}