遍历Java中的列表
遍历Java中的列表
这篇文章将讨论在 Java 中迭代列表的各种方法。
1.使用 List.toString()
方法
如果我们只是想显示列表的内容,我们可以通过使用 toString()
方法,然后简单地打印出来,如下图:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import java.util.List; import java.util.ArrayList; import java.util.stream.Stream; class Main { // 用于打印 `ArrayList` 的 Java 程序 public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("C"); list.add("C++"); list.add("Java"); // 1. 使用 `toString()` 打印列表的字符串表示 System.out.println(list.toString()); // 2. Java 8 方式! Stream.of(list.toString()) .forEach(System.out::println); } } |
2.使用 ListIterator
或者 Iterator
这 List
接口提供了一个特殊的迭代器,称为 ListIterator,除了正常的操作之外,还允许双向访问 Iterator
接口提供。我们可以打电话 List.listIterator() 得到一个 ListIterator
列表中的元素。我们也可以使用 List.iterator()
返回一个 Iterator
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
import java.util.ArrayList; import java.util.List; import java.util.Iterator; import java.util.ListIterator; import java.util.Arrays; class Main { // 遍历列表的 Java 程序 public static void main(String[] args) { List<String> list = Arrays.asList("C", "C++", "Java"); // 1. 使用 `ListIterator` 遍历列表 ListIterator<String> lItr = list.listIterator(); // 如果列表有更多元素,hasNext() 返回 true while (lItr.hasNext()) { // next() 返回迭代中的下一个元素 System.out.println(lItr.next()); } // 2. 使用迭代器 Iterator<String> itr = list.iterator(); while (itr.hasNext()) { System.out.println(itr.next()); } } } |
通用版本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.ListIterator; class Main { // 在 Java 中遍历列表的通用代码 public static <T, C> void IterateUsingIterator(List<T> list, Class<C> iteratorClass) { if (iteratorClass.getSimpleName().equals("ListIterator")) { // 使用 `ListIterator` 遍历列表 ListIterator<T> lItr = list.listIterator(); while (lItr.hasNext()) { System.out.println(lItr.next()); } } else if (iteratorClass.getSimpleName().equals("Iterator")) { // 使用 `Iterator` 遍历列表 Iterator<T> itr = list.iterator(); while (itr.hasNext()) { System.out.println(itr.next()); } } } // 遍历列表的 Java 程序 public static void main(String[] args) { List<String> list = Arrays.asList("C", "C++", "Java"); // 1. 使用 `ListIterator` 打印列表 IterateUsingIterator(list, ListIterator.class); // 2. 使用 `Iterator` 打印列表 IterateUsingIterator(list, Iterator.class); } } |
3.使用for循环/增强for循环
我们知道 list 是一个有序集合,因此我们可以使用 for 循环通过它们在列表中的索引来访问元素。
for 循环还有另一种形式,设计用于通过集合和数组进行迭代,称为增强型 for 循环。我们还可以使用增强的 for 循环来遍历列表。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import java.util.List; import java.util.ArrayList; import java.util.Arrays; class Main { // 遍历列表的 Java 程序 public static void main(String[] args) { List<String> list = Arrays.asList("C", "C++", "Java"); // 1. 使用for循环打印列表 for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } // 2. 使用增强的for循环打印列表 for (String s: list) { System.out.println(s); } } } |
下载 运行代码
4. Java 8——使用流和 Lambda
在 Java 8 中,我们可以借助流、lambda 和 forEach 来循环列表。以下程序显示了 4 种方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
import java.util.Arrays; import java.util.List; import java.util.stream.Stream; class Main { // 遍历列表的 Java 程序 public static void main(String[] args) { List<String> list = Arrays.asList("C", "C++", "Java"); // 1. 获取流并使用 lambda 表达式 list.stream().forEach(S -> { System.out.println(S); }); // 上面代码的简写 list.stream().forEach(S -> System.out.println(S)); // 2. 通过提供方法引用 list.stream().forEach(System.out::println); // 3. List 从 `Iterable` 接口继承 `forEach()` list.forEach(System.out::println); // 4. 使用`Stream.of()`获取`Stream ` Stream.of(list.toArray()) .forEach(System.out::println); } } |
5. 将列表转换为数组
我们还可以使用将列表转换为数组 List.toArray(T[ ]) 方法,然后使用 for 循环遍历数组或使用打印它 Arrays.toString()
.还有其他几种实现 toArray()
方法,如下图:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
import com.google.common.collect.FluentIterable; import com.google.common.collect.Iterables; import java.util.Arrays; import java.util.List; class Main { // 遍历列表的 Java 程序 public static void main(String[] args) { List<String> list = Arrays.asList("C", "C++", "Java"); // 将列表转换为数组 String[] array = null; // 1. 使用 `List.toArray(T[])` 方法 array = list.toArray(new String[list.size()]); System.out.println(Arrays.toString(array)); // 2. `List.toArray(T[])` – 不分配任何内存 array = list.toArray(new String[0]); System.out.println(Arrays.toString(array)); // 3. 使用 `List.toArray()` 方法 System.out.println(Arrays.toString(list.toArray())); // 4. Java 8 – 流 + 方法引用 array = list.stream().toArray(String[]::new); System.out.println(Arrays.toString(array)); // 5. Java 8 – Streams + lambda 表达式 array = list.stream().toArray(n -> new String[n]); System.out.println(Arrays.toString(array)); // 6. 使用 Guava 库中的 `FluentIterable` 类 array = FluentIterable.from(list).toArray(String.class); System.out.println(Arrays.toString(array)); // 7. 使用 Guava 库中的 `Iterables` 类 array = Iterables.toArray(list, String.class); System.out.println(Arrays.toString(array)); } } |
6.使用 Enumeration
界面
最后,我们可以使用已弃用的 枚举 打印列表的界面。该接口提供了枚举向量元素的方法。因此,我们需要先将列表转换为 Vector,然后打印所有 Vector 元素。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import java.util.*; class Main { // 遍历列表的 Java 程序 public static void main(String[] args) { List<String> list = Arrays.asList("C", "C++", "Java"); // 1. 将 `List` 转换为 `Vector` @Deprecated Enumeration<String> enumeration = new Vector(list).elements(); // 如果枚举包含更多元素 while (enumeration.hasMoreElements()) { // 打印枚举的下一个元素 System.out.println(enumeration.nextElement()); } // 2. `Collections.enumeration()` 返回一个枚举 // 指定集合 enumeration = Collections.enumeration(list); while (enumeration.hasMoreElements()) { System.out.println(enumeration.nextElement()); } } } |
这就是在 Java 中迭代 List 的全部内容
遍历Java中的列表相关推荐
- 遍历Java中的列表的方法
本文翻译自:Ways to iterate over a list in Java Being somewhat new to the Java language I'm trying to fami ...
- java中怎样克隆,如何在Java中克隆列表?
要克隆Java中的列表,最简单的方法是使用ArrayList.clone()方法- 示例import java.util.ArrayList; public class Demo { public s ...
- java对列表数据排序_如何在Java中对列表进行排序
java对列表数据排序 Sometimes we have to sort a list in Java before processing its elements. In this tutoria ...
- Java中迭代列表中数据时几种循环写法的效率比较
Java中经常会用到迭代列表数据的情况,本文针对几种常用的写法进行效率比较.虽然网上已经有了类似的文章,但是对他们的结论并不认同. 常见的实现方法: 1.for循环: [java] view plai ...
- java中map怎么遍历,Java中怎么遍历Map的所有的元素
Java中怎样遍历Map的所有的元素 JDK1.4中 view plaincopy to clipboardprint? Map map = new HashMap(); Iterator it = ...
- JAVA中修改顺序表中的元素_在Java中修改列表的每个项目
小编典典 第二个版本会更好.在内部,它们最后是相同的,但是第二个实际上允许您修改列表,而第一个将引发ConcurrentModificationException. 但是,然后您以错误的方式使用了It ...
- java字符串删掉子串_如何从Java中的列表中删除子列表?
java字符串删掉子串 从列表中删除子列表 (Removing SubList from a List) Suppose, we have a list of few elements like th ...
- Java对json遍历_如何遍历Java中的json对象
我正在尝试遍历json文件并获取所需的详细信息,这是我的json { "000": { "component": "c", "de ...
- java 有序列表_关于算法:在Java中为列表列表生成唯一的有序非重复组合
我知道有很多类似的问题,并且已经阅读了几个小时.但是它们似乎都不符合我的要求. 我有列表列表(list >),列表可以是任何大小. 例: 我的外部列表大小是:4 清单内容 1. list(0) ...
最新文章
- 这才是最好的程序语言,不服来辩
- [算法]一次商品交易利益最大化
- ABAP-AVL-OO方法中的ALV的如何自己添加按钮及其响应
- 不知因果,何以谈优化?
- spark 获取广播变量_spark使用广播变量
- pc控制iphone的软件_哪个备忘录便签app可以和PC电脑一块儿用
- AOP和OOP的区别
- 使用Windows Server 2003搭建一个asp+access网站
- 硬件开发过程简介(一)
- 10款在线检查英语语法的网站
- 魔王语言解释器C语言,[数据结构]魔王语言解释c语言实现
- 115网盘批量转存工具
- zend framework 1.5.2 中实现梅花雪1.0树状菜单
- 数据挖掘项目之Airbnb 新用户的民宿预定结果预测
- 学生HTML游戏网页作业作品——HTML+CSS+JavaScript魔域私服游戏HTML(1个页面)
- 【Python】创蓝253云通讯平台国际短信API接口DEMO
- 动力锂离子电池电池检测标准和方法
- Mac软件序列号查询工具KCNcrew Pack mac
- 笔试中怎么答产品设计类题目
- 手把手学习Vue3.0:CSS样式基础和HTML5基础收藏