gpt4 book ai didi

java - 在java 8中合并具有不同类型和长度的多个流

转载 作者:行者123 更新时间:2023-11-30 07:39:43 25 4
gpt4 key购买 nike

如何在 java 8 中合并具有不同类型和长度的多个流

Stream<String> x = Stream.of("A", "B", "C");
Stream<Integer> y = Stream.of(3, 7);
Stream<Float> z = Stream.of(1.1f, 2.2f);

预期的结果,是一个包含这样的东西的 Steam :

A 3 1.1f
A 3 2.2f
A 7 1.1f
A 7 2.2f
B 3 1.1f
B 3 2.2f
B 7 1.1f
B 7 2.2f
C 3 1.1f
C 3 2.2f
C 7 1.1f
C 7 2.2f

最佳答案

您必须定义一些包含这 3 个属性的类。我们称它为Triplet .

但由于我们必须多次传输某些数据源,所以最好从 List 开始s,不是 Stream小号:

List<String> x = List.of("A", "B", "C");
List<Integer> y = List.of(3, 7);
List<Float> z = List.of(1.1f, 2.2f);

(如果您必须以 Stream 开始,则必须先将第二个和第三个 Stream 收集到 List 中)。

现在你可以写:

Stream<Triplet> triplets =
x.stream()
.flatMap(a -> y.stream()
.flatMap (b -> z.stream()
.map(c -> new Triplet(a,b,c))));

如果你愿意,你可以制作Triplet通用类(然后生成一个 Stream<Triplet<String,Integer,Float>> )。

关于java - 在java 8中合并具有不同类型和长度的多个流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59172135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com