我是靠谱客的博主 虚心黑米,最近开发中收集的这篇文章主要介绍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对象

最后

以上就是虚心黑米为你收集整理的List中循环删除元素的全部内容,希望文章能够帮你解决List中循环删除元素所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部