對(duì)象重復(fù)是指對(duì)象里面的變量的值都相等,并不定是地址。list集合存儲(chǔ)的類型是基礎(chǔ)類型還比較好辦,直接把list集合轉(zhuǎn)換成set集合就會(huì)自動(dòng)去除。
當(dāng)set集合存儲(chǔ)的是對(duì)象類型時(shí),需要在對(duì)象的實(shí)體類里面重寫public boolean equals(Object obj) {} 和 public int hashCode() {} 兩個(gè)方法。
實(shí)體類
public class Student {public String id;public String name;public Student() {}public Student(String id,String name) {this.id = id;this.name = name;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic boolean equals(Object obj) {Student s=(Student)obj; return id.equals(s.id) && name.equals(s.name); }@Overridepublic int hashCode() {String in = id + name;return in.hashCode();}}測(cè)試類
import java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util.Set;public class QuSame { public static void main(String[] args) { List<Student> stu = new ArrayList<Student>(); stu.add(new Student("1","yi")); stu.add(new Student("3","san")); stu.add(new Student("3","san")); stu.add(new Student("2","er")); stu.add(new Student("2","er")); //set集合保存的是引用不同地址的對(duì)象 Set<Student> ts = new HashSet<Student>(); ts.addAll(stu); for (Student student : ts) { System.out.println(student.getId()+"-"+student.getName()); } }}以上這篇list集合去除重復(fù)對(duì)象的實(shí)現(xiàn)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選