首先,此内容为本人总结得出,尚有少许不足,勿怪
List为Connection的子接口且实现该接口为顺序集合,故该集合内的元素可以重复,其有许多的实现类,这里仅以ArrayList为例
一.indexOf()方法
此方法与contains()类似,作用为返回第一个同值的下标,如果不存在则返回-1.那问题就来了,当我们调用此方法时,该集合是如何将传入的参数与集合内的比较的呢?
从源代码中文明不难看出其调用了参数的equals()方法,通过equals()方法进行两者的比较,equals是()继承自Object类的一个方法,而我们也知道Object类是所有类的基类,故而所有的类都具有equals()方法.而在Object中equals是这样定义的
public boolean equals(Object obj) {
return (this == obj);
}
所以如果没有重写equals()方法的比较其实就是==的比较。故而如果想要将对象类型的集合进行各种操作只需重写该实体类的equals()方法即可。例如我有一个Student的类,对其进行indexOf。
)。当然如果只是这样肯定是不行的,因为equals()还未重写,我们还需在Student重写,这里我们以名字为比较依据
public static void main(String [] args){
List<Student> list1 = new ArrayList();
list1.add(new Student("张三","男",21));
list1.add(new Student("李四","男",12));
list1.add(new Student("王五","女",43));
Student stu = new Student("张三","女",89);
System.out.println(list1.indexOf(stu));
}
solve/70),这样就可以啦,我们就成功的将两个地址不一样的对象变成一样的对象啦。
二.contains()方法其实是一个对indexOf()的封装,在contains()方法中调用了indexOf()方法,这里就不细讲了,不明白的可以参考前面的
三.remove()方法的原理与indexOf()一样都是调用equals()方法。我们也可以通过其删除名字相同的第一个学生了哦
得到的值为:2.博客就写到这里了啦。谢谢各位支持0.0