gpt4 book ai didi

java - 如何将临时 map 合并到永久 map 上,以便我可以记录同一键的多个项目?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:31:57 26 4
gpt4 key购买 nike

所以我有两个映射,其中键基于单词的长度。每当有一个长度相同的单词时,我希望将它添加到该键中。

我想通过使用 map.merge() 函数来完成此操作,但是,在查看文档后我不确定如何操作。我尝试查看其他资源,但帮助不大。

Map<Integer, String> map = new HashMap<Integer, String>();

Map<Integer, String> map = new HashMap<Integer, String>();


String[] wordsSplit = doc.split(" ");
for(int i = 0; i < wordsSplit.length; i++) {
int key = wordsSplit[i].length();
Map<Integer, String> tempMap = new HashMap<Integer, String>();
tempMap.put(key, wordsSplit[i]);
//merge here
map.merge(key, map.keySet(), map.get(key) + ", " + wordsSplit[i]);
}

编辑:这个问题是不同的,因为在这里我试图弄清楚如何在将临时 map 合并到旧 map 的上下文中进行映射。

例如,这意味着如果有多个项目共享同一个 key ,那么结果会更像是:key: "Car, bar, Tar"

最佳答案

首先你需要一个合并函数来连接相同长度的单词,用", "分隔;

BiFunction<String, String, String> mergeFunction = (i, j) -> {      
return i + ", " + j;
};

然后 map.merge(key, x, mergeFunction); 根据长度合并 wordsSplit 数组的元素。 key下面是word的长度,x代表wordsSplit[i]

Stream.of(wordsSplit).forEach(x -> {
int key = x.length();
map.merge(key, x, mergeFunction);
});

或者你可以直接通过合并函数的主体 (i, j) -> { return i + ", "+ j; }map.merge() 而不是单独定义 mergeFunction:

Stream.of(wordsSplit).forEach(x -> {
int key = x.length();
map.merge(key, x, (i, j) -> { return i + ", " + j; });
});

关于java - 如何将临时 map 合并到永久 map 上,以便我可以记录同一键的多个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53133636/

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