Java循环中删除元素

1、使用常用的for循环如果进行元素删除操作会导致删除错误的元素。

List<Integer> list = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 6, 5, 1, 4, 1));
		for (int i = 0; i < list.size(); i++) {
			list.remove(list.get(i));
			System.out.println(list);
		}
}

没有能正确的删除元素

2、使用增强for循环删除元素会报java.util.ConcurrentModificationException异常

List<Integer> list = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 6, 5, 1, 4, 1));
		for (Integer i : list) {
			if (i == 1) {
				list.remove(i);
			}
			System.out.println(list);
		}
}

3、使用迭代器删除可以正确的完成删除

List<Integer> list = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 6, 5, 1, 4, 1));
Iterator<Integer> iterator = list.iterator();
		while (iterator.hasNext()) {
			Integer i = iterator.next();
			if (i == 1) {
				iterator.remove();
			}
			System.out.println(list);
		}
}

如果只有一个符合条件的元素三种循环都可以完成功能,如果存在多个必须使用迭代器循环删除元素。

发布了188 篇原创文章 · 获赞 20 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_36154832/article/details/104036586