我们希望在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);
添加磁盘时。它会在地图中更新吗?discography.add(disk);
答案 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列表是可变的,因此不会有任何复制。