在List集合中remove()方法的学习历程

1、List中的类型为String时

		ArrayList<String> list = new ArrayList<String>();
		list.add("tom");
		list.add("zzs");
		list.add("zcs");
		list.remove("tom");
		System.out.println(list);

上述代码执行结果为:
[zzs,zcs]
由此可看出remove(Object o)可使用值将想要删除的元素删除。

2、List中的类型为Integer时

		ArrayList<Integer> list = new ArrayList<Integer>();
		list.add(1);
		list.add(2);
		list.add(3);
		list.add(4);	
		list.remove(3);
		System.out.println(list);

上述代码执行结果为:[1, 2, 3]
可见并不是我们想要的结果,因为此处执行的是remove(index)删除的是索引为3的元素,也就是4。
如果想要删除值为3的元素该如何做呢?
看如下代码

ArrayList<Integer> list = new ArrayList<Integer>();
		list.add(1);
		list.add(2);
		list.add(3);
		list.add(4);	
		list.remove(new Integer(3));
		System.out.println(list);

输出结果为:[1, 2, 4]

3、List集合中的类型为对象时

(1)、类型为具体对象时
	ArrayList<Student> list = new ArrayList<>();
	list.add(new Student("1"));
	list.add(new Student("1"));
	Student stu = new Student("1");
	list.remove(stu);

此处只删除了stu,此处删除操作不能使用list.remove(new Student(“1”))。

(2)、类型为Object时
	ArrayList<Object> list = new ArrayList<>();
	list.add(new Student("1"));//在list中加入Student对象
	list.add(new Dog());//在list中加入Dog对象
	Student stu = new Student("1");
	list.remove(stu);//删除id为1的对象
	System.out.println(stu);
	//以下为Student类
	public class Student {
	public String id;
	@Override
	public boolean equals(Object obj) {//重写了equals方法,
		if(obj instanceof Student) {//判断对象是否是Student对象
			Student student = (Student)obj;//上转型对象转为下转型
			return this.id.equals(student.id);
		}
		return false;
	}	
}

为什么要重写equals方法?
ctrl+点击remove可以看到底层代码:在这里插入图片描述
可以注意到remove方法中有用到equals方法,在上面重写equals方法后,一可以判断list中对象是否属于要判断的对象,二是可以判断对象的属性是否相等,即可实现删除集合中对象的属性为特定属性的对象。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值