概述
Iterator 是 java.utils 包下定义的迭代器接口。在开发中,我们用它来遍历集合,从而实现访问相应数据以及删除相应数据的目的。
常用方法
- boolean hasNext():当迭代器对象中有剩余元素可以访问时,返回 true;
- bject next():当 hasNext() 方法返回 true 时,它返回集合中的下一个元素。当没有下一个元素时,此方法会抛出 NoSuchElementException。
- void remove():此方法将删除集合中的被选中元素,若此时没有元素被选中,则抛出 IllegalStateException。
示例
遍历集合
代码:
public class IteratorTest {
@Test
public void test() {
Collection c = new ArrayList();
c.add(123);
c.add(456);
c.add(789);
// 调用 iterator() 得到一个新的迭代器对象
Iterator iterator = c.iterator();
// hasNext() 的作用相当于判断是否还有下一个元素
while (iterator.hasNext()) {
// 指针下移,并将下移后指针所指的集合中的元素返回
System.out.println(iterator.next());
}
}
}
输出:
123
456
789
删除元素
public class IteratorTest {
@Test
public void test1() {
Collection c1 = new ArrayList();
c1.add("a");
c1.add("b");
c1.add("c");
// 调用 iterator() 得到一个新的迭代器对象
Iterator iterator1 = c1.iterator();
// hasNext() 的作用相当于判断是否还有下一个元素
while (iterator1.hasNext()) {
// 指针下移,并将下移后指针所指的集合中的元素返回
System.out.println(iterator1.next());
}
//删除集合中"c"
iterator1 = c1.iterator();
while (iterator1.hasNext()){
Object obj = iterator1.next();
if("c".equals(obj)){
iterator1.remove();
}
}
System.out.println("以下为删除元素 c 后的结果");
//遍历集合
iterator1 = c1.iterator();
while (iterator1.hasNext()){
System.out.println(iterator1.next());
}
System.out.println("以下为删除所有元素结果");
//遍历集合
iterator1 = c1.iterator();
while (iterator1.hasNext()){
// 若没下一行代码,则会报 IllegalStateException。此时指针位置指向第一个元素之前
iterator1.next();
iterator1.remove();
}
}
}
输出:
a
b
c
以下为删除元素 c 后的结果
a
b
以下为删除所有元素结果
我们不难得出以下结论:
当我们创建了一个 Iterator 对象后,默认的游标位置在集合的第一个元素之前,next() 作用是将指针位置下移一位。
如果不是上述结论,输出结果不会有 123,以及删除所有元素时也不会报 IllegalStateException。
配图:
注意
- 集合对象每次调用 iterator() 方法都得到一个全新的迭代器对象;
- 如果还未调用 next() 或在上一次调用 next() 方法之后已经调用了 remove() 方法,再调用 remove() 都会报 IllegalStateException;
- 使用 remove() 方法时,用的是 Iterator 的 remove() 方法,而不是集合的 remove() 方法。
推荐阅读
iterator in java
how to use iterator in java
最后
以上就是优雅导师为你收集整理的Java Iterator 详解的全部内容,希望文章能够帮你解决Java Iterator 详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复