概述
定义一个集合:
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("v");
list.add("c");
list.add("r");
1、需求:有一个集合,判断集合中是否有 “b” 元素,如果有就动态添加一个 “Java” 元素。
public 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、动态删除集合中的元素
// for 循环删除,索引要 --(-- 是为了解决:多个"b"元素挨着的情况)
for (int i = 0; i < list.size(); i ++) {
if ("b".equals(list.get(i))) {
/*
等同于
list.remove(i);
-- i;
*/
list.remove(i --);
}
}
// 迭代器 Iterator 动态删除
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
if ("b".equals(iterator.next())) {
// ❌不能用集合的删除方法,因为迭代过程中如果集合删除并发修改异常
// list.remove("b");
iterator.remove();
}
}
// 使用迭代器 ListIterator 动态删除
ListIterator listIterator = list.listIterator();
while (listIterator.hasNext()) {
if ("b".equals(listIterator.next())) {
listIterator.remove();
}
}
// for 循环和 迭代器组合
for (Iterator<String> it2 = list.iterator(); it2.hasNext();) {
if ("b".equals(it2.next())) {
it2.remove();
}
}
最后
以上就是彩色河马为你收集整理的笔记 —— for、Iterator、ListIterator的全部内容,希望文章能够帮你解决笔记 —— for、Iterator、ListIterator所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复