public class Test1 { @Test public void test(){ List<Person> list1 = new ArrayList<Person>(); List<Person> list2 = new ArrayList<Person>(); list1.add(new Person("1","1")); list1.add(new Person("2","2")); list2.add(new Person("1","1")); list2.add(new Person("2","2")); for(Person info : list1){ if(list2.contains(info)){ System.out.println("list2包含 list1的對象"); } } } class Person { private String id; private String name; public Person(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; } } }
其實這個問題剛開始接觸java的時候,你們或許還知道,入行久了就淡忘了. 若是想繼續使用contians怎麼解決呢?從新equals方法. 在Person類中,添加equals方法java
class Person { private String id; private String name; public Person(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; } public boolean equals(Object o){ Person person = (Person)o; return id == person.id && name == person.name; } }
public boolean contains(Object o) { return indexOf(o) >= 0; } public int indexOf(Object o) { if (o == null) { for (int i = 0; i < size; i++) if (elementData[i]==null) return i; } else { for (int i = 0; i < size; i++) if (o.equals(elementData[i])) return i; } return -1; }
equals()默認的是比較引用,若是比較兩個對象的內容是否相等,就需像上面重寫equals方法.this