gpt4 book ai didi

java - 如何使用 Java 流将两个数组合并到一个映射中?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:01:00 26 4
gpt4 key购买 nike

假设我们有以下两个数组

String[] keys   = new String[] {"a", "b", "c", "aa", "d", "b"}
int[] values = new int[] { 1 , 2 , 3 , 4 , 5 , 6 }

通过将这 2 个数组合并到 HashTable 中,我们得到以下内容

// pseudo-code
Map<String, Integer> dictionary = new HashTable<>(
("a" => 1)
("b" => 8) // because "b" appeared in index 1 and 5
("c" => 3)
("aa" => 4)
("d" => 5)
);

我们如何使用 java Lambda 样式来做到这一点?

到目前为止,我有以下内容:

// this loops through the range given (used for index start and end)
// and sums the values of duplicated keys
tree.listMap = IntStream.range(range[0], range[1]).boxed().collect(
Collectors.toMap(i - > dictionary[i], i - > i + 1, Integer::sum, TreeMap::new)
);

但是,我想采用 2 个数组,按键和值合并它们,其中值是重复键的所有值的总和。我们如何做到这一点?

最佳答案

你去吧:

Map<String,Integer> themap = 
IntStream.range (0, keys.length).boxed()
.collect (Collectors.toMap(i->keys[i],
i->values[i],
Integer::sum,
TreeMap::new));

输出:

{a=1, aa=4, b=8, c=3, d=5}

这与您发布的代码段非常相似,但出于某种原因,您发布的代码段不包含对 keysvalues 数组的引用。

关于java - 如何使用 Java 流将两个数组合并到一个映射中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46948265/

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