当前位置: 首页 > 面试题库 >

将值放置在HashMap中之后更改值会更改HashMap内部的内容吗?

百里景山
2023-03-14
问题内容

如果我创建一个新的HashMap和一个新的List,然后使用一些任意键将List放置在Hashmap中,然后再调用List.clear()会影响我放置在HashMap中的内容吗?

更深层的问题是:当我向HashMap中添加某些内容时,是复制并放置了一个新对象,还是放置了对原始对象的引用?

谢谢!


问题答案:

这里发生的事情是您在哈希图中放置了 指向 列表的 指针 ,而不是列表本身。

当您定义

List<SomeType> list;

您正在定义指向列表的指针,而不是列表本身。

当你做

map.put(somekey, list);

您只是存储 指针 的副本,而不是列表。

如果在其他地方跟随该指针并在其末尾修改该对象,则持有该指针的任何人仍将引用同一修改后的对象。

有关Java中传递值的详细信息,请参见http://javadude.com/articles/passbyvalue.htm。



 类似资料:
  • 我跟踪过这个帖子 用tableview绑定hashmap(JavaFX) 并创建了一个由HashMap中的数据填充的TableView。 通过从创建并将该传递给的构造函数,从称为的接收其数据。(代码如下) 但是,尽管它是一个,带有,但当对基础HashMap进行更改时,TableView不会更新。 下面是我的代码: 这正是将hashmap与tableview(JavaFX)绑定的代码,只是我添加了以

  • 我正在使用Android Studio创建一个应用程序,并使用Firebase模拟后端数据库。目前,我正在尝试使应用程序能够接收并显示我通过Firebase输入的数据。当我使用Firebase data snapshot方法捕获数据时,由于快照发生在内部类中,我无法保存和使用数据。 例如,在Firebase中,我已将“Fri”的值指定给“2步”。如果您查看下面的代码,第一条print语句(内部类内

  • 如果你看看hashMap里面java的hashCode方法,你会发现: 因此,当您将内容插入哈希映射时,哈希映射的哈希代码将更改。因此,如果我们在哈希集中插入一个空的哈希映射,然后向此哈希映射插入一些内容,然后调用 它将返回 。为什么 Java 允许这样的行为?这很容易导致哈希集中出现重复的项目。 请尝试运行以下代码:

  • 我使用Eclipse创建了一个网站,Servlet在其中将数据发送到jsp。但是我不知道为什么我在Servlet中更改数据。它仍然将旧数据发送到jsp。即使我尝试了这些选项.. 菜单-项目-清理(如果不使用自动构建,请单击此选项) 菜单-项目-项目自动构建(选中此选项) 下面是一个例子: Product.java ProductModel.java ProductController.java i

  • 我在Eclipse中获得了一个Hashmap条目,如下所示: 链接到hashmap输出的图片 我无法使用键=“value”获取值。我收到的错误是:java。lang.ClassCastException:类java。无法将lang.Double转换为java类。util。Map(java.lang.Double和java.util.Map位于加载程序“bootstrap”的模块java.base中

  • 我正在尝试使用camel实现一个场景,如下所示:- > 将文件和文件的crc值存储在目录中 我的路线如下 但是上传到sftp服务器的文件只是crc文件,因为它在exchange中存在。我应该如何解决这种情况?如果你们中有人遇到过这个问题,请指导我。谢谢