介紹
我們想在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);都是一樣的 –