JAVA中关于list的indexOf和contains以及remove简述

本文深入探讨Java中List接口的indexOf(), contains()和remove()方法的实现原理,特别是它们如何利用equals()方法来比较对象。通过具体示例,如使用自定义Student类,展示了如何重写equals()以实现更灵活的对象比较。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,此内容为本人总结得出,尚有少许不足,勿怪
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。
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));
}
)。当然如果只是这样肯定是不行的,因为equals()还未重写,我们还需在Student重写,这里我们以名字为比较依据这里写图片描述
solve/70),这样就可以啦,我们就成功的将两个地址不一样的对象变成一样的对象啦。
二.contains()方法其实是一个对indexOf()的封装,在contains()方法中调用了indexOf()方法,这里就不细讲了,不明白的可以参考前面的
三.remove()方法的原理与indexOf()一样都是调用equals()方法。我们也可以通过其删除名字相同的第一个学生了哦这里写图片描述
得到的值为:2.博客就写到这里了啦。谢谢各位支持0.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值