通过返回ArrayList并为其赋值,将元素添加到HashMap中的ArrayList

时间:2016-10-04 09:16:12

标签: java arraylist hashmap

简介

我们希望在Map中搜索是否包含特定的singer。如果是,那么我们会向属于disk的{​​{1}}添加list of disks。如果singer不存在,那么我们会将singer添加到singer,空Map

地图的结构如下:

ArrayList

Map<Singer,List<Disk>> diskMap = new HashMap<Singer, List<Disk>>(); 的类型为Singer

代码正常运行。我不明白代码的最后部分:

List<Disk>
  • 当我们使用discography = diskMap.get(singer); discography.add(disk); 添加磁盘时。它会在地图中更新吗?
  • 是否类似于diskMap.get(歌手).add(磁盘)?
  • 如果更新正确吗?它在内存中是如何工作的?

源代码

discography.add(disk);

2 个答案:

答案 0 :(得分:7)

  

当我们使用discography.add(disk);添加磁盘。它会在地图中更新吗?   =&GT;是。

     

它与diskMap.get(歌手).add(磁盘)类似吗?   =&GT;是。

     

如果更新正确吗?它在内存中是如何工作的?

discography = diskMap.get(歌手);

这将discography var指定给与地图条目相同的对象(相同的列表)。

两者都指向相同的内存对象(相同的引用)。如果您向discography添加或删除元素,它也会影响地图中的列表

答案 1 :(得分:1)

  

当我们使用discography.add(disk);添加磁盘。它会在地图中更新吗?

将给定关键点的值映射到列表。调用map.get不会复制给定密钥的值。

  

它与diskMap.get(歌手).add(磁盘)类似吗?

  

如果更新正确吗?它在内存中是如何工作的?

是。在记忆中:

  • map.get查找并返回给定密钥的列表。如果没有值,则返回null。在内部HashMap使用EntrySet来存储名为Map.Entry的键值对。
  • list.add将元素添加到列表中。 Java列表是可变的,因此不会有任何复制。