创建数据流的关键在于按场景选择合适方式:集合用stream()/parallelstream(),数组用arrays.stream(),少量值用stream.of(),动态生成用iterate/generate。

创建数据流是使用 Java Stream API 的起点,关键不在于“能不能建”,而在于“选哪种方式更贴合场景”。集合、数组、静态值、甚至无界序列,都有对应的方法,用对了能少写循环、避免冗余判断。
从集合直接获取流
这是最常用也最直观的方式。任何实现了 Collection 接口的类型(如 List、Set)都自带 stream() 和 parallelStream() 方法:
-
list.stream()创建顺序流,适合多数日常操作; -
list.parallelStream()启用并行处理,适合元素量大(通常 > 10000)、操作无状态且计算密集的场景; - 注意:Map 本身不是 Collection,需先调用
keySet()、values()或entrySet()再转流。
用 Arrays.stream() 处理数组
原始类型数组或对象数组不能直接调用 stream(),必须通过 Arrays 工具类:
-
Arrays.stream(new String[]{"a", "b", "c"})→ 对象数组转引用流; -
Arrays.stream(intArray)→int[]转IntStream,避免 Integer 装箱开销; - 支持范围截取:
Arrays.stream(arr, from, to)可只处理子区间。
用 Stream.of() 快速构造小规模流
适合已知少量固定值的场景,写法简洁,自动推断泛型:
-
Stream.of("hello", "world")→Stream<string></string>; -
Stream.of(1, 2, 3)→Stream<integer></integer>; - 若传入单个数组,它会被当作一个元素(即流中只有1个数组),此时应改用
Arrays.stream()。
生成无限流:iterate 与 generate
当需要按规则动态生成数据(如序列、随机数、常量流),可用这两个静态工厂方法:
-
Stream.iterate(0, n -> n + 2)→ 从 0 开始的偶数流(0, 2, 4…),需配合limit(n)终止,否则会无限执行; -
Stream.generate(Math::random)→ 持续产生随机 double 值; - 两者都返回惰性流,只有终端操作触发时才真正生成所需数量的元素。
流一旦创建,就不可复用;中间操作不执行,终端操作才真正启动流水线。选对创建方式,后面过滤、映射、归约才能自然衔接。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











