如何将一个字符串一次添加到HashMap <integer,list <string =“”>&gt;?

时间:2015-05-06 00:13:11

标签: java string dictionary arraylist hashmap

此函数循环通过字典(allWords)并使用 getKey函数生成一个键。 wordListMap是一个HashMap&gt;所以我需要循环并放入密钥和一个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));
        }

    }

}

3 个答案:

答案 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,并为其添加新值。