栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 集合 Iterator ListIterator

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 集合 Iterator ListIterator

Java Iterator 和 ListIterator Iterator

模块 java.base 软件包 java.util
Interface Iterator
参数类型

E - 此迭代器返回的元素类型

public interface Iterator

Iterator 是一个接口,它是集合的迭代器。Iterator 提供的 API 接口如下:

default void	forEachRemaining​(Consumer action)	对每个剩余元素执行给定操作,直到处理完所有元素或操作引发异常。
boolean hasNext() 如果迭代具有更多元素,则返回 true 。
E next() 返回迭代中的下一个元素。
default void	remove()	从底层集合中移除此迭代器返回的最后一个元素(可选操作)。
import java.util.*;

ArrayList a = new ArrayList();
a.add("aaa");
a.add("bbb");
a.add("ccc");
System.out.println("Before iterate : " + a);
Iterator it = a.iterator();
while (it.hasNext()) {
    String t = it.next();
    if ("bbb".equals(t)) { it.remove(); }
}
System.out.println("After iterate : " + a);

注意:

  1. Iterator 只能单向移动;
  2. Iterator.remove() 是唯一安全的方式来在迭代过程中修改集合;如果在迭代过程中以任何其它的方式修改了基本集合将会产生未知的行为。而且每调用一次 next() 方法,remove() 方法只能被调用一次,如果违反这个规则将抛出一个异常。
ListIterator

模块 java.base 软件包 java.util
Interface ListIterator

All Superinterfaces:

Iterator

public interface ListIterator extends Iterator

列表的迭代器,允许程序员在任一方向上遍历列表,在迭代期间修改列表,并获取迭代器在列表中的当前位置。 ListIterator没有当前元素; 它的光标位置总是位于调用 previous() 返回的元素和调用 next() 返回的元素。 长度为 n 的列表的迭代器具有 n + 1 可能的光标位置,如下面的^ ( ^ )所示:

请注意, remove() 和 set(Object) 方法未根据光标位置定义; 它们被定义为对 next() 或 previous() 调用返回的最后一个元素进行操作。
此接口是 Java Collections framework 的成员。

void	add​(E e) 将指定的元素插入列表(可选操作)。
boolean hasNext() 如果此列表迭代器在向前遍历列表时具有更多元素,则返回 true 。
boolean hasPrevious() 如果此列表迭代器在反向遍历列表时具有更多元素,则返回 true 。
E next() 返回列表中的下一个元素并前进光标位置。
int nextIndex() 返回后续调用 next()将返回的元素的索引。
E previous() 返回列表中的上一个元素并向后移动光标位置。
int previousIndex() 返回后续调用 previous()将返回的元素的索引。
void	remove() 从列表中删除 next()或 previous() (可选操作)返回的最后一个元素。
void	set​(E e) 用指定的元素替换 next()或 previous()返回的最后一个元素(可选操作)。

声明方法的接口 java.util.Iterator
forEachRemaining
ListIterator 是一个功能更加强大的,它继承于 Iterator 接口,只能用于各种 List 类型的访问。可以通过调用 listIterator() 方法产生一个指向 List 开始处的 ListIterator,还可以调用 listIterator(n) 方法创建一个一开始就指向列表索引为 n 的元素处的 ListIterator。

ArrayList a = new ArrayList();

a.add("aaa");
a.add("bbb");
a.add("ccc");
System.out.println("Before iterate : " + a);

ListIterator it = a.listIterator();
while (it.hasNext()) {
    System.out.println(it.next() + ", " + it.previousIndex() + ", " + it.nextIndex());
}

while (it.hasPrevious()) {
    System.out.print(it.previous() + " ");
}
System.out.println();
it = a.listIterator(1);
while (it.hasNext()) {
    String t = it.next();
    System.out.println(t);
    if ("ccc".equals(t)) { it.set("nnn"); } 
    else { it.add("kkk"); }
}
System.out.println("After iterate : " + a);
// Before iterate : [aaa, bbb, ccc]
// aaa, 0, 1
// bbb, 1, 2
// ccc, 2, 3
// ccc bbb aaa
// bbb
// ccc
// After iterate : [aaa, bbb, kkk, nnn]
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/691364.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号