1、API介绍

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Demo5_Iterator {
public static void main(String[] args) {
Collection col = new ArrayList();
col.add(1);
col.add(2.3);
col.add('b');
col.add("nba");
col.add(true);
col.add(new Object());
//.hasNext() 判断集合中是否存在下个元素,如果存在返回true,否则返回false
// if(iterator.hasNext()) {
// next = iterator.next();
// System.out.println(next);
// }
// if(iterator.hasNext()) {
// next = iterator.next();
// System.out.println(next);
// }
// if(iterator.hasNext()) {
// next = iterator.next();
// System.out.println(next);
// }
// if(iterator.hasNext()) {
// next = iterator.next();
// System.out.println(next);
// }
// if(iterator.hasNext()) {
// next = iterator.next();
// System.out.println(next);
// }
// if(iterator.hasNext()) {
// next = iterator.next();//最后一个元素
// System.out.println(next);
// }
Iterator iterator = col.iterator();
//.next() 读取下一个元素,返回该元素对象
Object next = null;
//1、while结构结合迭代器实现遍历集合
while (iterator.hasNext()) {
next = iterator.next();//java.util.NoSuchElementException 没有如此之多元素错误/异常
System.out.println(next);
}
//2、for结构结合迭代器实现遍历集合
for (Iterator iterator1 = col.iterator(); iterator1.hasNext(); ) {
Object next1 = iterator1.next();
System.out.println(next1);
}
}
}

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Demo5_Iterator {
public static void main(String[] args) {
Collection col = new ArrayList();
col.add(1);
col.add(2.3);
col.add('b');
col.add("nba");
col.add(true);
col.add(new Object());
for (Iterator iterator1 = col.iterator(); iterator1.hasNext(); ) {
Object next1 = iterator1.next();
//.remove() 删除集合中元素,注意必须与.next()结合使用。
iterator1.remove();
//System.out.println(next1);
}
System.out.println(col);
}
}
2、常见问题
//1、Collection集合与数组相同与区别
//相同之处:集合与数组都能存储多个元素
Object[] obj = new Object[6];
obj[0] = 1;
obj[1] = 2.3;
obj[2] = 'b';
obj[3] = "nba";
obj[4] = true;
obj[5] = new Object();
//obj[6] = 123;//数组越界
System.out.println(Arrays.toString(obj));
//区别1:数组的长度是固定,集合的长度可变。
//区别2:数组中元素没有动态管理,集合可以动态管理元素
obj[2] = null;
System.out.println(Arrays.toString(obj));
Collection col = new ArrayList();
col.add(1);
col.add(2.3);
col.add('b');
col.add("nba");
col.add(true);
col.add(new Object());
col.remove(1);
System.out.println(col);
//结论:开发中使用集合比数组多。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
public class Demo5_Iterator {
public static void main(String[] args) {
//常见问题
//2、一个迭代器只能迭代一次
Collection col = new ArrayList();
col.add(1);
col.add(2.3);
col.add('b');
col.add("nba");
col.add(true);
col.add(new Object());
Iterator iterator = col.iterator();
Object next = null;
while (iterator.hasNext()) {
next = iterator.next();
System.out.println(next);
}
//如需重复遍历集合,需要重新迭代器
iterator = col.iterator();
while (iterator.hasNext()) {
next = iterator.next();
System.out.println(next);
}
}
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
public class Demo5_Iterator {
public static void main(String[] args) {
//常见问题
//3、遍历过程删除元素只能使用迭代器的remove()实现,不能使用集合中remove()方法实现
//起因:迭代器中包含了集合中元素信息如多少个,每个元素类型等等。在遍历过程,调用集合删除方法删除后,由于迭代器中数据没有同步修改
//导致读取时失败,出现兵法修改错误。>>>不能使用集合中remove()方法实现
Collection col = new ArrayList();
col.add(1);
col.add(2.3);
col.add('b');
col.add("nba");
col.add(true);
col.add(new Object());
for (Iterator iterator1 = col.iterator(); iterator1.hasNext(); ) {
Object next1 = iterator1.next();//java.util.ConcurrentModificationException 并发修改错误/异常
//iterator1.remove();
//col.remove('b');
if (next1 instanceof Character) {
Character c = (Character) next1;
if (c == 'b') {
iterator1.remove();
}
}
}
System.out.println(col);
}
}
本文通过实例展示了如何使用Java Iterator遍历ArrayList,并深入讲解了Collection与数组的区别、迭代器的使用注意事项以及遍历过程中删除元素的问题。重点讨论了集合操作与数组的不同、迭代器的单次使用和并发修改错误。
249

被折叠的 条评论
为什么被折叠?



