【发布时间】:2016-10-04 09:16:11
【问题描述】:
简介
如果Map 包含特定的singer,我们想搜索它。如果是这样,那么我们将在属于singer 的list of disks 中添加一个disk。如果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);添加磁盘时。会在地图中更新吗? - 和diskMap.get(singer).add(disk)类似吗?
- 如果更新正确?它在内存中是如何工作的?
源代码
public void addDisk(Disk disk){
Singer singer = disk.getSinger();
List<Disk> discography = null;
if(diskMap.get(singer) == null){
diskMap.put(singer, new ArrayList<Disk>());
}
discography = diskMap.get(singer);
discography.add(disk);
}
【问题讨论】:
-
您使用的是 Java 8 吗?如果是这样,
diskMap.computeIfAbsent(singer, x -> new ArrayList<>())会在一行中解决这个问题。 -
1) 它将更新您的地图值 2) diskMap.get(singer).add(disk) 和 discography.add(disk);都是一样的