此函数循环通过字典(allWords)并使用 getKey函数生成一个键。 wordListMap是一个HashMap>所以我需要循环并放入密钥和一个List。如果没有列表我放了一个如果有,我只需要附加下一个字典单词。这是我需要帮助的地方。我只是无法弄清楚语法只是将下一个单词附加到已经存在的列表中。任何帮助,将不胜感激。
public static void constructWordListMap() {
wordListMap = new HashMap<>();
for (String w : allWords) {
int key = getKey(w);
if (isValidWord(w) && !wordListMap.containsKey(key)) {
List list = new ArrayList();
list.add(w);
wordListMap.put(key, list);
} else if (isValidWord(w) && wordListMap.containsKey(key)) {
wordListMap.put(key, wordListMap.get(key).add(w));
}
}
}
答案 0 :(得分:1)
map.get(key).add(value)
这很简单。
答案 1 :(得分:0)
所以我想收集你想要的,HashMap<Integer, List<String>>
,你想:
List
对象String
个对象添加到List
List
个对象添加为与先前生成的密钥配对的值(类型Integer
)为此,您需要先生成密钥
Integer myKey = getKey(w);
然后,您输入一个循环并添加到List object
List<String> myList = new List<String>;
for(int i = 0; i < intendedListLength; i++) {
String myEntry = //wherever you get your string from
myList.add(myEntry);
}
最后,您要将List
添加到HashMap
myHash.put(myKey, myList);
在评论中留下任何问题。
答案 2 :(得分:0)
else if (isValidWord(w) && wordListMap.containsKey(key)) {
wordListMap.put(key, wordListMap.get(key).add(w));
}
如果要在列表中添加新值,则需要先检索该列表。在上面的代码中,您将add的返回值放入表中(这是一个布尔值),这不是您想要的。
相反,你会像保罗所说的那样做:
else if (isValidWord(w) && wordListMap.containsKey(key)) {
wordListMap.get(key).add(w);
}
这样做的原因是因为您之前已经向表中添加了一个ArrayList。在这里,您将获得该ArrayList,并为其添加新值。