遍历容器有三种方式:
1. 使用for-each遍历容器
2. 使用迭代器`Iterator`遍历容器
3. 使用聚合操作遍历容器
for-each
使用方法如下:
public static void testForeach(Collection<?> c) {
for (Object o: c) {
System.out.println(o);
}
}
需要注意的是,在for-each中不能删除元素,否则会报错。
public static void testForeach(Collection<?> c) {
for (Object o: c) {
System.out.println(o);
if ("a".equals(o)) {
c.remove(o);
}
}
}
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
testForeach(list);
}
上面的代码在运行期间会报错
Exception in thread "main" java.lang.UnsupportedOperationException: remove
at java.base/java.util.Iterator.remove(Iterator.java:102)
at java.base/java.util.AbstractCollection.remove(AbstractCollection.java:283)
at a.Test_1.testForeach(Test_1.java:12)
at a.Test_1.main(Test_1.java:19)
a
Process finished with exit code 1
使用迭代器Iterator
Iterator接口主要有三个方法
boolean hasNext(); // 判断是否还有元素
E next(); // 返回下一个元素
void remove(); // 删除当前元素
使用迭代器遍历集合的代码如下:
public static void testIterator1(Collection<?> c) {
Iterator<?> iterator = c.iterator();
while (iterator.hasNext()) {
Object o = iterator.next();
System.out.println(o);
}
}
迭代器中提供了remove方法,并且在遍历的过程中是可以删除元素的
public static void testIterator2(Collection<?> c) {
Iterator<?> iterator = c.iterator();
while (iterator.hasNext()) {
Object o = iterator.next();
if ("a".equals(o)) {
iterator.remove();
continue;
}
System.out.println(o);
}
}
测试代码如下:
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
testIterator2(list);
}
运行结果如下:
b
c
Process finished with exit code 0
一般在不需要删除元素时使用for-each,需要删除元素时使用迭代器
聚合操作
使用聚合操作遍历如下:
public static void testAggregate(Collection<?> c) {
c.stream().forEach(e -> {
System.out.println(e);
});
}
测试代码如下:
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
testAggregate(list);
}
本文介绍了Java中遍历容器的三种方式:for-each循环,通过迭代器以及使用聚合操作。for-each简单易用,但不支持在遍历过程中删除元素;迭代器则允许在遍历中删除,提供了remove方法;聚合操作提供了另一种遍历方式,适合特定场景。
745

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



