我告诉你,这种方式会报错
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21@Test(expected = ConcurrentModificationException.class) public void testListForeachRemoveThrow() { List<String> list = new ArrayList<>(); list.add("1"); list.add("2"); list.add("3"); for (String s : list) { list.remove(s); } } @Test(expected = ConcurrentModificationException.class) public void testListForeachAddThrow() { List<String> list = new ArrayList<>(); list.add("1"); list.add("2"); list.add("3"); for (String s : list) { list.add(s); } }
不能在foreach的时候添加元素和删除元素否则会报错
你可以优雅的这样
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14@Test public void testListForiRight() { List<String> list = new ArrayList<>(); list.add("1"); list.add("2"); list.add("3"); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); list.remove(i); i--; //位置前挪了减回去就行了 } }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14@Test public void testIteratorRemove() { List<String> list = new ArrayList<>(); list.add("1"); list.add("2"); list.add("3"); Iterator<String> itr = list.iterator(); while (itr.hasNext()) { String s = itr.next(); System.out.println(s); itr.remove(); } }
最后
以上就是聪明猫咪最近收集整理的关于Java ArrayList在foreach中remove的的全部内容,更多相关Java内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复