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