List中循环删除元素

在Java中,因为List接口有remove()这个方法,我们只需要调用remove()方法,就可以删除List中的某个元素。
但是在for循环中用remove()就不太行了
根据面向百度开发的经验,总结了四种List循环删除元素的方法

1.使用迭代器删除(推荐)

	//使用迭代器删除元素
	List<String> list = new ArrayList<>();
	list.add("1");
	list.add("2");
	list.add("3");
	list.add("4");
	list.add("5");
	Iterator<String> iterator = list.iterator();
	while (iterator.hasNext()){
		String str = iterator.next();
		if(str.equals("2")){
			iterator.remove();
		}
	}
	System.out.println(list);

iterator.remove() 方法会在删除当前迭代对象的同时,会保留原来元素的索引,用迭代删除元素是最保险的方法。

2.删除元素后i-1

	//使用for循环删除元素
	List<String> list = new ArrayList<>();
	list.add("1");
	list.add("2");
	list.add("3");
	list.add("4");
	list.add("5");
	for (int i = 0; i < list.size(); i++) {
		String str = list.get(i);
		if(str.equals("2")){
			list.remove(i);
			i--;
		}
	}
	System.out.println(list);

删除一个元素后,后边的元素前移1位,i-1,下次循环能访问到前移1位的元素

3.反向删除

	//反向循环删除元素
	List<String> list = new ArrayList<>();
	list.add("1");
	list.add("2");
	list.add("3");
	list.add("4");
	list.add("5");
	for (int i = list.size() - 1; i >= 0 ; i--) {
		String str = list.get(i);
			if(str.equals("1")){
				list.remove(i);
			}
		}
	System.out.println(list);

这样,就算删除了倒数第一个元素,List重排,也只是把后边的元素左移1位,此时倒数第一个元素(下标为1)被删除,接着2替代了1成为了下标为1的元素,但前边的元素不变,i = 0 后依然能够找到其相邻的元素

4.赋值给新的List

	//赋值给新的List
	List<String> list = new ArrayList<>();
	list.add("1");
	list.add("2");
	list.add("3");
	list.add("4");
	list.add("5");
	List<String> list2 = new ArrayList<>();
	for (int i = list.size() - 1; i >= 0 ; i--) {
		String str = list.get(i);
		if(!str.equals("2")){
			list2.add(str);
		}
	}
	System.out.println(list);
	System.out.println("新的List"+list2);

可以过滤掉不需要的元素后赋值给新的list对象

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值