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

Han*_*Goc 1 java arraylist hashmap

介绍

我们想要搜索Map它是否包含特定的singer.如果是的话,我们将添加disklist of disks属于singer.如果singer不存在则我们将其添加singerMapArrayList.

地图的结构如下:

Map<Singer,List<Disk>> diskMap = new HashMap<Singer, List<Disk>>();
Run Code Online (Sandbox Code Playgroud)

是一个Singer的类型的List<Disk>.

代码工作正常.我不明白代码的最后部分:

discography = diskMap.get(singer);
discography.add(disk);
Run Code Online (Sandbox Code Playgroud)
  • 当我们discography.add(disk);用来添加磁盘时.它会在地图中更新吗?
  • 它与diskMap.get(歌手).add(磁盘)类似吗?
  • 如果正确更新?它在内存中是如何工作的?

源代码

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);
    }
Run Code Online (Sandbox Code Playgroud)

小智 7

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

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

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

discography = diskMap.get(歌手);

这将discography var分配给与映射条目相同的对象(相同的列表).

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