Stream.concat()用于合并两个顺序流,返回包含两流所有元素的新流,如Stream.concat(stream1, stream2);仅支持两个流合并,输入需为顺序流,原流被消费后不可再用,null输入会抛异常,适用于类型一致的数据整合场景。

Java 中 Stream.concat() 方法用于将两个顺序流合并成一个新的流。这个方法属于 java.util.stream.Stream 类,是静态方法,使用起来简单直接。
基本用法
Stream.concat(Stream
例如:
Streamstream1 = Stream.of("apple", "banana"); Stream stream2 = Stream.of("cherry", "date"); Stream combined = Stream.concat(stream1, stream2); combined.forEach(System.out::println);
输出结果为:
立即学习“Java免费学习笔记(深入)”;
主要增加论坛整合,在后台内置网银,快钱支付宝等实时在线支付平台 支付宝支付方式改成在收银台统一支付 并且修改了收到已付款定单后台显示定单确认功能[这功能非常强大,自动确认] 并且增加了商城内短信功能,商城店主可以自由与会员之间实时交谈。 改正给ID添加积分后,登陆到前台,在 MEMBER LOGIN 下面的积分仍然显示为0的问题 修改 订单确认 中 投递&包装方法 没有根据前面的选择而改
banana
cherry
date
注意事项
使用 Stream.concat() 时需要注意以下几点:
- 只能合并两个流。如果需要合并多个流,可以链式调用或使用其他方式(如
Stream.of(stream1, stream2, stream3).flatMap(Function.identity())) - 输入的两个流都必须是顺序流(sequential)。虽然并行流也可以传入,但 concat 结果是顺序的,不会保留并行性
- 原流在调用后会被“消费”,不能再使用,否则会抛出
IllegalStateException - 支持 null 安全:如果传入的某个流为 null,会抛出
NullPointerException
实际应用场景
这个方法适合在数据来源分离但类型一致时进行整合处理。
比如从两个不同集合中提取数据流后合并:
Listlist1 = Arrays.asList("A", "B"); List list2 = Arrays.asList("C", "D"); Stream result = Stream.concat(list1.stream(), list2.stream()); result.collect(Collectors.toList()); // ["A", "B", "C", "D"]
基本上就这些。Stream.concat 是个轻量、直观的工具,适合简单的双流合并场景,代码清晰易读。复杂情况建议结合 flatMap 或 collect 处理。









