gpt4 book ai didi

java - 更新Map的Map值

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

我正在使用 Java8,并且我有一张 map

<强> Map<Intege,Map<String,String>> mainMap=new HashMap()

目前我正在更新内部 map 的值,如下

Map map = mainMap.get(1);
map.put("abc", "abc+xyz");
mainMap.put(1, map);

任何人都可以帮助我使用 Java8 或任何其他方法吗?

最佳答案

首先,您必须避免使用原始类型。

您必须使用菱形运算符正确初始化主 map 。

Map<Integer,Map<String,String>> mainMap=new HashMap<>()

那个<>非常重要。

另外,不要定义 map正如 Map 。它必须被定义为

Map<String,String> map = mainMap.get(1);

现在讨论问题本身。在类似的情况下,问题通常是当顶部 map 中的某些键没有值时会发生什么。你必须做这样的事情:

map = mainMap.get(1);
if ( map == null ) {
map = new HashMap<>();
mainMap.put(1, map);
}
map.put("some key", "some value");

如果您没有if子句,你会遇到 NullPointerException当您使用map.put(...)时如果主键之前在 map 中不存在。

自 Java 8 起,Map 中添加了一些默认方法。接口(interface),这样您就可以保存该样板文件。新的习惯用法是:

mainMap.computeIfAbsent(1, k->new HashMap<>()).put("some key", "some value");

如果 map 为1存在,将从 computeIfAbsent 返回。如果不存在,则会创建它并放置在 mainMap 中,也回来了。所以你可以使用put直接在 computeIfAbsent(...) 返回的结果上.

当然,这必须通过正确定义和初始化的 map 类型来完成 - 再次强调,不要使用原始类型。

关于java - 更新Map的Map值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59466957/

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