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方法的介绍,本节中也可以分为三个方面比较:
1、形参为空:
判断的第一个条件,当传入的是空的时候,将集合中的元素逐个比较,要是有空的输出一个>=0,因此事true
import java.util.ArrayList;
public class Csdn {
public static void main(String[] args) {
ArrayList<String> list =new ArrayList<>();
list.add("Tom");
list.contains(null);
}
}
2、形参为字符串
判断是走else的后面的语句:
此时使用上个博客讲的equals方法,要是集合为非字符串型的直接比较地址,要是集合中的元素是字符串类型的,就开始比较长度,数组;
import java.util.ArrayList;
public class Csdn {
public static void main(String[] args) {
ArrayList<String> list =new ArrayList<>();
list.add("Tom");
list.contains("Tom");
}
}
3、形参为其他类:
此时方法未被改写,直接比较地址是否相同,传出True与false
import java.util.ArrayList;
public class Csdn {
public static void main(String[] args) {
ArrayList<String> list =new ArrayList<>();
list.add("Tom");
list.contains(new Csdn());
}
}