List.contain(Object)方法与Object的equals方法
1 @Test 2 public void testListContain(){ 3 Person person1 = new Person("zhangsan",13); 4 Person person2 = new Person("zhangsan",14); 5 ArrayList<Person> list = new ArrayList<Person>(); 6 list.add(person1); 7 list.add(person2); 8 Person person3 = new Person("zhangsan",13); 9 if(list.contains(person1)){ 10 System.out.println("contain"); 11 }else{ 12 System.out.println("not contain"); 13 } 14 15 } 16 17 result :contain
将第9行换成if(list.contains(person3)) result: not contain
for (int i = 0; i < size; i++) if (o.equals(elementData[i])) return i;
o代表person1
contains方法内部循环列表 查看o是否equals 列表中的各个元素
Object.java类
1 public boolean equals(Object obj) { 2 return (this == obj); 3 }
默认的equals方法比较的是两个对象的地址
Person类可以复写父类Object的这个方法,用来在比较时不比较地址,比如比较类中的元素的值等。