集合元素的遍历 使用 迭代器Iterator接口
package com.atguigu.java;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* 集合元素的遍历 使用 迭代器Iterator接口
*
* 1. 内部的方法 hasNext用while循环判断是否还有下一个元素 和 next显示集合元素,只显示一个,有多少元素写多少个next
* 2. 集合元素每次调用Iterator()方法都得到一个全新的迭代器对象,默认游标都在集合的第一个元素之前
* 3. 内部定义了一个remove方法 , 可以在遍历的时候,删除集合中的元素。此方法不同于集合调用remove()
*
* 测试Iterator中的 remove()
* 如果还未调用 next() 或在上一次调用next方法之后已经调用了remove方法,
* 再调用remove都会报 NoSuchElementException 异常
*
* @author liangqichen
* @create 2021-09-16 23:47
*/
public class IteratorTest {
@Test
public void test1() {
Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new Person("Jerry", 20));
coll.add(new String("Tom"));
coll.add(false);
Iterator iterator = coll.iterator();
//方式 一 :
// System.out.println(iterator.next()); // 123
// System.out.println(iterator.next()); // 456
// System.out.println(iterator.next()); // Person{name='Jerry', age=20}
// System.out.println(iterator.next()); // Tom
// System.out.println(iterator.next()); // false
// // 报异常 NoSuchElementException
// System.out.println(iterator.next());
// 方式二 : 不推荐
// for (int i = 0; i < coll.size(); i++) {
// System.out.println(iterator.next());
// }
// 方式三 :hasNext() 判断是否还有下一个元素
while (iterator.hasNext()) {
// next() 指针下移 , 将下移以后集合位置上的元素返回
System.out.println(iterator.next());
}
}
// 测试Iterator中的remove() 方法
@Test
public void test3(){
Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new Person("Jerry", 20));
coll.add(new String("Tom"));
coll.add(false);
Iterator iterator = coll.iterator();
// 删除集合中 "Tom"
while (iterator.hasNext()){
Object obj = iterator.next();
if ("Tom".equals(obj)){
iterator.remove();
}
}
// 重新遍历集合
iterator = coll.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
本文介绍Java中如何使用Iterator接口遍历集合元素,并详细解释了Iterator的基本用法及其remove方法的特点与注意事项。
1660

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



