作者:白变小樱啊 | 来源:互联网 | 2023-09-25 19:34
我有两个数组如下:
k[] = {"K1","K2","K3"}
v[] = {"V1","V2","V3"}
我想以这样的方式使用 Stream API 迭代这两个数组,以便我将它们作为 Map 收集
[K1=V1,K2=V2,K3=V3]
回答
IntStream.range(0, k.length).collect(Collectors.toMap(i -> k[i], i -> v[i]));
回答
假设两个数组的长度相同,您可以创建一个带有索引的流。这可以通过IntStream.range(start,end)
开始为 0 和结束数组的大小来完成。因为我们使用范围,所以不会包括结尾。
在此流中,您需要将结果收集到映射中,键将是具有给定索引的第一个数组中的值,该值将是具有给定索引的第二个数组中的值。
请注意, anIntStream
与 a 不同Stream
。在这种情况下,我们将需要一个整数流,以便我们可以在收集器中收集它们(收集器不适用于原始类型)。为此,调用该方法.boxed()
将其转换为Stream
String k[] = {"K1", "K2", "K3"};
String v[] = {"V1", "V2", "V3"};
Map result = IntStream.range(0, k.length).boxed().collect(Collectors.toMap(i -> k[i], i -> v[i]));
这给出了以下结果
{K1=V1, K2=V2, K3=V3}