java中collect是stream api最常用终端操作,通过collectors提供tolist、toset、tocollection、groupingby、joining等预定义收集器,支持集合转换、分组统计与字符串拼接。

Java 中 collect 是 Stream API 最常用、最灵活的终端操作之一,用于将流中的元素收集为集合(如 List、Set、Map)或其他结构(如字符串、统计对象等)。核心在于传入一个 Collector,而 Collectors 工具类提供了大量预定义的收集器,无需手写。
用 Collectors.toList() / toSet() 快速转成基础集合
这是最常见场景:把流变成 List 或 Set,保留/去重元素。
-
toList()返回新ArrayList(非空、可变、允许重复和 null) -
toSet()返回新HashSet(无序、自动去重、不保证插入顺序)
示例:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
.map(Person::getName)
.collect(Collectors.toList());
用 toCollection() 指定具体集合类型
当需要特定实现类(如 LinkedList、TreeSet)或自定义集合时,用 toCollection(Supplier)。
- 传入构造方法引用或 lambda,指定如何创建空集合
- 后续元素由 collect 自动添加进去
示例:
Set.map(Person::getName)
.collect(Collectors.toCollection(TreeSet::new));
用 groupingBy 分组,生成 Map>
按某个属性或条件分组,是 collect 最强大的能力之一。
-
groupingBy(Function):以函数结果为 key,值为该 key 对应的元素列表 - 支持嵌套收集器,比如分组后统计数量、求平均值、再转成 Set 等
示例(按年龄分组):
Map.collect(Collectors.groupingBy(Person::getAge));
进阶:分组后只取姓名列表(用 mapping + toList):
.collect(Collectors.groupingBy(
Person::getAge,
Collectors.mapping(Person::getName, Collectors.toList())
));
用 joining 拼接字符串
对字符串流做连接,比手动遍历 + StringBuilder 更简洁。
-
joining():无分隔符拼接 -
joining(CharSequence delimiter):带分隔符(如逗号) -
joining(delimiter, prefix, suffix):带前后缀(如 "[a,b,c]")
示例:
String joined = names.stream().collect(Collectors.joining(", ", "[", "]"));
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










