【发布时间】:2020-11-11 11:36:29
【问题描述】:
我无法理解之前遇到的事情。
我有一个名为DictionaryOfTranslations 的类,它有一个名为add 的方法。
这个类唯一的实例变量是private HashMap<String, ArrayList<String>> dictionary;。
这是 add 方法的样子:
public void add(String word, String translation) {
this.dictionary.putIfAbsent(word, new ArrayList<>());
ArrayList<String> completed = this.dictionary.get(word);
completed.add(translation);
this.dictionary.put(word, completed);
}
我遇到的麻烦是要理解为什么最后一行代码:this.dictionary.put(word, completed); 显然是多余的。
如果我把这条线注释掉,结果是完全一样的。
我的问题是:为什么你不必专门在这个 hashmap 上调用 put() 方法,将更新后的 Arraylist 添加到其中?
【问题讨论】:
-
是的,这是多余的,因为之前的
putIfAbsent。 -
completed是对字典中的 ArrayList 的引用,您正在直接修改它