gpt4 book ai didi

java - 将值添加到 hashmap 中的键

转载 作者:行者123 更新时间:2023-12-01 17:12:10 26 4
gpt4 key购买 nike

我有一个自定义对象的 HashMap ,每个用户应该有许多值。我弄清楚了如何创建 map 并将一个值放入键中,但需要帮助进行这样的检查(伪代码):

If key exists then add another value to key

else add key and value

我目前有:

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


for(customp : data) {
map.put(p.getUser(), p);
}

输出:

user1 / package.class@1231412
user2 / package.class@12fwf3
user3 / package.class@dc238d

获取输出的代码:

        for (Map.Entry<String, custom> entry : map.entrySet())
{
System.out.println(entry.getKey() + " / " + entry.getValue());
}

需要:

user1 / package.custom@1231412, package.custom@vfee, package.custom@2riopj
user2 / package.custom@12fwf3, package.custom@cwfc3
user3 / package.custom@324rrf, package.custom@23d, package.custom@cvewff2

我最终将迭代 map 以获取每个对象并使用它们,但现在 key 不断替换自身,因此我没有所有信息。

最佳答案

看来你必须使用 Map<String, List<custom>>相反。

对于每个键,检查映射是否已存在,如果存在,则将自定义添加到与该键映射的列表中,否则创建一个新映射并添加它。

for(custom p : data) {
List<custom> l = map.get(p.getUser());
if(l == null){
l = new ArrayList<>();
map.put(p.getUser(), l);
}
l.add(p);
}

如果您使用的是 Java 8,以上逻辑可以简化为:

Map<String, List<custom>> map = data.stream()
.collect(Collectors.groupingBy(custom::getUser));

最后,如果您熟悉 Guava 库(如果您不熟悉,我也推荐您),请查看 Multimap 类,它是一个集合,可以将每个键映射到多个值。

遵循命名约定也很好。

关于java - 将值添加到 hashmap 中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23202103/

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