對象重複是指對象裏面的變量的值都相等,並不定是地址java
public class Student { 02. 03.public String id; 04.public String name; 05.public Student() { 06.} 07.public Student(String id,String name) { 08.this.id = id; 09.this.name = name; 10.} 11.public String getId() { 12.return id; 13.} 14.public void setId(String id) { 15.this.id = id; 16.} 17.public String getName() { 18.return name; 19.} 20.public void setName(String name) { 21.this.name = name; 22.} 23.@Override 24.public boolean equals(Object obj) { 25.Student s=(Student)obj; 26.return id.equals(s.id) && name.equals(s.name); 27.} 28.@Override 29.public int hashCode() { 30.String in = id + name; 31.return in.hashCode(); 32.} 33.}
import java.util.ArrayList; 02.import java.util.HashSet; 03.import java.util.List; 04.import java.util.Set; 05. 06.public class QuSame { 07. 08. public static void main(String[] args) { 09. List<Student> stu = new ArrayList<Student>(); 10. stu.add(new Student("1","yi")); 11. stu.add(new Student("3","san")); 12. stu.add(new Student("3","san")); 13. stu.add(new Student("2","er")); 14. stu.add(new Student("2","er")); 15. //set集合保存的是引用不一樣地址的對象 16. Set<Student> ts = new HashSet<Student>(); 17. ts.addAll(stu); 18. 19. for (Student student : ts) { 20. System.out.println(student.getId()+"-"+student.getName()); 21. } 22. } 23.}
list集合存儲的類型是基礎類型還比較好辦,直接把list集合轉換成set集合就會自動去除。 當set集合存儲的是對象類型時,須要在對象的實體類裏面重寫public boolean equals(Object obj) {} 和 public int hashCode() {} 兩個方法。ide