介绍
我们想在Map
进行搜索,如果它包含一个特定singer
值添加元素到ArrayList的一个HashMap中。如果是这样,那么我们将在属于singer
的中添加disk
。如果singer
不存在,则我们将singer
添加到Map
,其中空的ArrayList
。通过返回ArrayList和分配给它
地图的结构如下:
Map<Singer,List<Disk>> diskMap = new HashMap<Singer, List<Disk>>();
的键是Singer
和值是List<Disk>
类型。
代码工作正常。当我们使用discography.add(disk);
添加磁盘
discography = diskMap.get(singer);
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);都是一样的 –