如何迭代Hashmap和;放入数组/列表结构?

时间:2015-04-17 05:28:22

标签: java arrays hashmap iteration

感谢您阅读我的帖子。目前我正在做一个学校项目,不幸被困。我有一个类型的哈希映射,我希望能够迭代并放入数组/列表结构。而不是使用Map.Entry我有一个帮助类,使代码不那么棘手(我仍然被欺骗)。

助手班级:

    class WordCount {

        String word;
        Integer count;

        WordCount(String word, Integer count) {
            this.word = word;
            this.count = count;
        }
    }

我试过这个:

WordCount[] wc = new WordCount[hm.size()];
Iterator it = hm.entrySet().iterator();
int i = 0;
while (it.hasNext()) {
    Map.Entry pair = (Map.Entry) it.next();
    wc[i].word = (String) pair.getKey();
    wc[i].count = (Integer) pair.getValue();
    i++;
}

但是我得到了该代码的错误。我觉得有一个更简单的方法可以解决这个问题......

3 个答案:

答案 0 :(得分:3)

如果你想将Hashmap的值转换为数组,我能想到的最简单方法是

ArrayList<Elements> list =
    new ArrayList<Elements>(myHashMap.values());

答案 1 :(得分:1)

在java 8中:

 List<WordCount> words = hm.entrySet().stream()
                            .map(e -> new WordCount(e.getKey(), e.getValue()))
                            .collect(Collectors.toList());

答案 2 :(得分:0)

List<WordCount> wordcounts = new ArrayList<>();  

for (String s : hm.keySet()) {
    int count = hm.get(s);
    WordCount w = new WordCount(s,count);
    wordcounts.add(w);
}