代码对比
✕ Java 8
for (ListIterator<String> it =
list.listIterator(list.size());
it.hasPrevious(); ) {
String element = it.previous();
System.out.println(element);
}
✓ Java 21+
for (String element : list.reversed()) {
IO.println(element);
}
发现此代码有问题? 告诉我们。
为什么现代方式更好
自然语法
增强 for 循环,而非冗长的 ListIterator。
无复制
reversed() 是视图,不复制列表。
更少代码
六行 ListIterator 样板变为一行。
旧方式
手动 ListIterator
现代方式
reversed()
自 JDK
21
难度
入门
JDK 支持
反向列表迭代
可用
自 JDK 21 LTS 起广泛可用(2023 年 9 月)
工作原理
SequencedCollection 中的 reversed() 方法返回一个反向排序的视图,不进行复制。这与 for-each 循环完美配合,无需 ListIterator 样板。
相关文档