List list = map.getOrDefault(key, new ArrayList());这行如果执行的不是default而是map.get(key)
那代码是不是变成List list = map.get(key);这个是给引用名list添加元素了?还是给list赋值了
如果代码直接写List list = map.get(key);的话会报错吗
List list = map.getOrDefault(key, new ArrayList());
对应的map中存在key,那么list 会指向 map.get(key);
如果 不存在, 那么list = new ArrayList(); list 指向一个空的集合对象
List list = map.getOrDefault(key, new ArrayList()); 是将指针指向对应的对象
list.add()不是赋值,而是给集合添加一个元素。
赋值其实就是指针指向对应的对象
因为一个key可以重复出现,第一次所以new Arraylist, getOrDefault 就是没有的时候就是第一次, 如果有的话就给list赋值
getOrDefault这个方法需要两个参数,第一个为key:指的是你map中对应的key,第二个default: 你想给这key对应的value什么值!
如果根据第一个参数key在你的map集合中找到了对应的value,就不会执行第二个参数,而是取出对应的value让你继续操作,如果没有找到对应的value,根据key得出来的是null,就会执行第二个参数,给你以这个key生成一个你定义的value。如果单说你肯定有这个key那他跟map.get没有区别,他这个是可以少一步判断,不用判断取出来是否为空,为空就根据你的defaut给你创建一个,不为空就取出来直接用