java stream api 实现将流收集为 list,核心方法是调用 collect(collectors.tolist())。该操作会遍历流中的元素,并将它们依次添加到返回的列表中。如果需要指定具体的 list 实现类(如 arraylist),应使用 collect(collectors.tocollection(arraylist::new))。此过程是终端操作,执行后流即被消费。

Collectors.toList() 与 toCollection 的区别是什么
Collectors.toList() 返回的是一个不保证类型的可变列表,而 Collectors.toCollection() 允许开发者明确指定 List 的具体实现类型。前者适用于不需要特定 List 实现的场景,后者适用于需要 ArrayList、LinkedList 等具体类型的场景。

import java.util.List;
import java.util.ArrayList;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
Stream<string> stream = Stream.of("A", "B", "C");
// 使用 toList()
List<string> list1 = stream.collect(Collectors.toList());
System.out.println("toList result: " + list1);
Stream<string> stream2 = Stream.of("D", "E", "F");
// 使用 toCollection()
List<string> list2 = stream2.collect(Collectors.toCollection(ArrayList::new));
System.out.println("toCollection result: " + list2);
}
}</string></string></string></string>
如何确保收集结果为不可变列表
若需获得不可变列表,应使用 Collectors.toUnmodifiableList()(Java 10+)。该方法返回的列表在尝试修改时会抛出 UnsupportedOperationException,适合用于保护数据不被意外修改的场景。
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
Stream<string> stream = Stream.of("X", "Y", "Z");
List<string> unmodifiableList = stream.collect(Collectors.toUnmodifiableList());
// unmodifiableList.add("W"); // 这将抛出异常
System.out.println(unmodifiableList);
}
}</string></string>
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











