当前位置: 首页 > 知识库问答 >
问题:

为什么hashmap的值没有用getOrDefault方法更新?

乔俊才
2023-03-14
List<String> list = hmap.getOrDefault(key,new ArrayList<String>());
list.add(s);
hmap.put(key,list);

为什么我需要再次使用hmap.put方法?

我的理解是这样的。

假设没有现有的键值对。所以,用

List<String> list = hmap.getOrDefault(key,new ArrayList<String>());

如果我在同一个实例中添加一个字符串,那么hashmap也应该自动更新,对吗?键=>列表对象。如果我添加到列表对象,那么对象引用不应该改变,对吗?

为什么我需要再次使用put方法并这样做?

hmap.put(key,list);

共有1个答案

董子平
2023-03-14

阅读文档,即getordefault()的javadoc:

返回指定键映射到的值,如果此映射不包含键的映射,则返回DefaultValue

它没有说明如果找不到键就插入默认值。

hmap.computeIfAbsent(key, k -> new ArrayList<>())
    .add(s);
 类似资料:
  • 在上面的代码中,我得到的输出是: 在我做 d1.name 之后=“亚瑟” 我期望输出是

  • 和都有构造函数来设置初始容量,但提供以确保如果预期插入大量元素,内部数组已经增加。在某些情况下,也可能发生同样的事情。那么为什么没有确保容量的方法来保持存储桶准备就绪?

  • 我想安装Primeng7.0.0到我的Angular项目,但首先我需要更新我的JHipster到最后一个版本。 当我将此命令写入terminal时,我得到以下错误

  • 问题内容: Iterables提供了两种方法 但只有一个 是否存在任何破坏对称性的设计/实现原因? 问题答案: 我认为要点是,没有理由可以使用来完成此操作。Guava尽力使API保持较小,因此没有添加可以/应该以其他方式轻松完成的事情。 另一方面,还没有一种机制可以测试iterable是否为空,如果是,则返回默认值而不是第一个值。因此,。 同样,没有简单的方法来获取最后一个元素,因此和

  • 问题内容: 虽然有一种方法没有。这是为什么?文件在完成后会自动关闭吗? 谢谢! 问题答案: 该类的javadoc将类描述为: 文件和目录路径名的抽象表示。 只是路径名的一种表示形式,有一些关于文件系统(如)和目录处理的方法,但是实际的流输入和输出在其他地方完成。流可以打开和关闭,文件不能。 (我个人的看法是,不幸的是Sun后来继续创建,给命名不一致带来了很大的困惑。)

  • 当使用Java8流时,获取一个列表、从中创建一个流、处理业务并将其转换回来是很常见的。类似于: 有什么想法吗?