网站首页 > java教程 正文
概述
在这篇文章中,我们对 Java 如何逆向遍历一个 List 进行了一些简单的描述。
- 主要的思路就是从正向遍历使用的 i++ 变成 i–
- 如果使用了迭代器 Iterator 的话,可以使用迭代器的逆向迭代
- 你还可以直接对 List 进行逆向
Java 中的迭代器 Java
Iterator 是在 Java Collections 框架中的一个接口:Iterator (Java SE 11 & JDK 11 )
在 Java 的 Collections 框架中,允许使用 Iterator 来对 List 中的元素进行遍历。
Iterator 是在 Java 1.2 的版本中推出的,用于替代 JDK 中的 Enumeration。
当然在当前的 JDK 中,你还是能够看到 Enumeration 的影子的。
使用原生 Java 进行逆向迭代
使用 Loop
这种就是最简单的思路的,将正向遍历使用的 i++ 变成 i–。
因为我们使用 i 来表示 List 中元素的下标,如果将 i 的查找方式从前往后变成从后往前,就能够完成 List 的逆向遍历了。
for (int i = list.size(); i-- > 0; ) {
System.out.println(list.get(i));
}
ListIterator 迭代器
迭代器 中还有一个 ListIterator 迭代器,在这个 ListIterator 迭代器中,如果你为迭代器提供了 List 的长度的话,这个 ListIterator 迭代器将会将 List 的指针指向到 List 最后的一个元素。
ListIterator listIterator = list.listIterator(list.size());
然后使用 ListIterator 提供的 hasPrevious 方法,从后往前进行迭代。
while (listIterator.hasPrevious()) {
System.out.println(listIterator.previous());
}
Collections.reverse() 方法
Collections 是 JDK 提供的一个类,在这个类中,有一个静态 reverse 方法。
使用这个方法将会对你提供的 List 进行逆向排序。
Collections.reverse(list);
对重新排序后的 List,你可以使用正常的迭代器从前往后进行迭代查找。
for (String item : list) {
System.out.println(item);
}
需要注意的是,这个方法将会对输入的 List 顺序进行修改,在很多时候,这个可能是你在编程时候并不希望出现的情况。
many cases.
使用 Apache 的 ReverseListIterator
Apache Commons Collections 工具类中,提供了 ReverseListIterator 类,使用这个类,将会返回逆向 List 的迭代器。
这个方法只会返回逆向迭代器,并不会对输入的 List 进行修改,因此你不需要担心原始输入 List 中元素进行改变的情况。
在使用 Apache Collections 工具类之前,你需要在你的 pom 文件中添加下面的内容:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
你可以通过在 ReverseListIterator 构造方法中,传入一个原始的 List,然后获得 ReverseListIterator 的迭代器实例。
ReverseListIterator reverseListIterator = new ReverseListIterator(list);
在获得这个迭代器实例后,就可以使用正常的迭代方法对元素进行遍历和输出了:
while (reverseListIterator.hasNext()) {
System.out.println(reverseListIterator.next());
}
使用 Guava’s 的 Lists.reverse()
你还可以简单的使用 Google 提供的 Guava 库中的静态 reverse() 方法,这个方法将会返回一个输入 List 的逆向视图。
使用最新的 Guava 依赖:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version>
</dependency>
然后对原始的 List 进行逆向视图,使用下面的方法将会返回一个逆向的 List 视图。
List<String> reversedList = Lists.reverse(list);
返回后的逆向视图,将可以使用迭代器进行迭代后遍历:
for (String item : reversedList) {
System.out.println(item);
}
这个方法将会返回一个新逆向后的 List,原始 List 的顺序是不会改变的。
结论
在本篇文章中,我们对如何将一个 List 进行逆向进行了一些说明和演示。
将一个原始 List 逆向输出的方法比较简单,通常使用上面 3 个思路就可以完成逆向元素的输出了。
猜你喜欢
- 2024-11-20 学习编程第189天 python编程 遍历字典与列表
- 2024-11-20 女朋友跟我吐槽 Java 中 ArrayList 遍历时删除元素的各种姿势
- 2024-11-20 一篇文章带你弄懂Python基础之列表介绍和循环遍历
- 2024-11-20 Java8 Stream流递归,几行代码搞定遍历树形结构
- 2024-11-20 ArrayList还是LinkedList?性能可差千倍
- 2024-11-20 Java集合-List
- 2024-11-20 如何正确遍历删除List中的元素
- 2024-11-20 python每天学习一点点(遍历列表-for循环)
- 2024-11-20 Java集合框架进阶:玩转List、Set和Map接口的高级用法!
- 2024-11-20 java8对List集合根据某一字段进行分组
你 发表评论:
欢迎- 最近发表
-
- Java内存溢出紧急处理:10个必知的Linux命令快速定位OOM
- 面试常问的 25+ 个 Linux 命令(linux面试命令大全)
- Java堆外内存溢出紧急处理实战:Linux命令定位与Spring Boot解决
- java开发常用的Linux命令,高频的没你想象的多
- Java 应用 CPU 飙升?8 个 Linux 命令组合拳快速锁定异常线程
- Java 开发者线上问题排查常用的 15 个 Linux 命令
- Java程序员必备的Linux命令:让你的工作效率翻倍
- Java程序员必备的Linux命令全解析
- [超全整理] Java 程序员必备的 100 条 Linux 命令大全
- SAP ABAP资源导航(sap aatp)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)