循环删除list中多个符合条件元素

  项目用到了for循环删除多个元素,自己尝试了几遍,得出两个方法,在这里记录一下

 下面都是用一个简单例子说明一下。

1、for循环倒序

public static void main(String[] args){
		List<String> list = new ArrayList<String>();
		list.add("111");
		list.add("2222");
		list.add("333");
		list.add("4");
		list.add("5");
		list.add("6");
		list.add("777");
		list.add("888");
		list.add("9");
		for (int i = list.size()-1 ;i>=0;i--) {
			String string = list.get(i);
			if(string.length()==3){
				list.remove(string);
			}
		}
	}

   这种方式,正序的时候,会出现,紧邻的元素漏掉的情况,但是倒序的时候,就OK


2、Iterator 迭代器遍历

	public static void main(String[] args){
		List<String> list = new ArrayList<String>();
		list.add("111");
		list.add("2222");
		list.add("333");
		list.add("4");
		list.add("5");
		list.add("6");
		list.add("777");
		list.add("888");
		list.add("9");
		Iterator<String> it = list.iterator();
		while(it.hasNext()){
			String string = it.next();
			if(string.length()==3){
				it.remove();
			}
		}	
	}

  这种方式是可以正常删除也不会报错,但是需要注意一下,就是这个remove方法,一定要用Iterator的remove方法删除,不能用list本身remove方法删除,不然会报错java.util.ConcurrentModificationException

    这是我总结的两种方式删除元素,欢迎补充!

猜你喜欢

转载自blog.csdn.net/tail_0701/article/details/79785892