定义一个集合:
复制代码
1
2
3
4
5
6
7ArrayList<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("v"); list.add("c"); list.add("r");
1、需求:有一个集合,判断集合中是否有 “b” 元素,如果有就动态添加一个 “Java” 元素。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20public static void dynamicAdd(ArrayList<String> list) { // 使用 Iterator 迭代过程中,List动态添加元素会出现 - '并发修改异常'; // Iterator<String> iterator = list.iterator(); // while (iterator.hasNext()) { // if ("b".equals(iterator.next())) { // list.add("Java"); // ConcurrentModificationException 并发修改异常 // } // } // List 集合特有的迭代器,实现给List动态添加元素 ListIterator listIterator = list.listIterator(); while (listIterator.hasNext()) { if ("b".equals(listIterator.next())) { listIterator.add("Java"); } } // list 输出结果 [a, b, Java, v, c, r] }
如果动态为 ArrayList 添加元素,需要使用 List 集合特有的迭代器。
2、动态删除集合中的元素
复制代码
1
2
3
4
5
6
7
8
9
10
11
12// for 循环删除,索引要 --(-- 是为了解决:多个"b"元素挨着的情况) for (int i = 0; i < list.size(); i ++) { if ("b".equals(list.get(i))) { /* 等同于 list.remove(i); -- i; */ list.remove(i --); } }
复制代码
1
2
3
4
5
6
7
8
9
10// 迭代器 Iterator 动态删除 Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { if ("b".equals(iterator.next())) { // ❌不能用集合的删除方法,因为迭代过程中如果集合删除并发修改异常 // list.remove("b"); iterator.remove(); } }
复制代码
1
2
3
4
5
6
7
8// 使用迭代器 ListIterator 动态删除 ListIterator listIterator = list.listIterator(); while (listIterator.hasNext()) { if ("b".equals(listIterator.next())) { listIterator.remove(); } }
复制代码
1
2
3
4
5
6
7// for 循环和 迭代器组合 for (Iterator<String> it2 = list.iterator(); it2.hasNext();) { if ("b".equals(it2.next())) { it2.remove(); } }
最后
以上就是彩色河马最近收集整理的关于笔记 —— for、Iterator、ListIterator的全部内容,更多相关笔记内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复