如何在Java中计算ArrayList中的匹配元素

时间:2011-05-30 14:48:30

标签: java collections arraylist

我有关于如何计算java中ArrayList中匹配元素的问题。 例如:我的ArrayList包含[运动,运动,球,运动员,运动]

我需要输出如下:

word sport frequency 3
word ball  frequency 1
word player frequency 1

感谢提前

4 个答案:

答案 0 :(得分:5)

使用地图:

Map<String, Integer> occurrencies = new HashMap<String, Integer>();
for (String word : list) {
    occurrencies.put(word, occurrencies.containsKey(word)
    ? occurrencies.get(word) + 1 : 1);
}
for (Entry<String, Integer> entry : occurrencies.entrySet()) {
    System.out.println("Word: "+entry.getKey()
                     + ", occurences: "+entry.getValue());
}

如果您希望按字母顺序对单词进行排序,请使用TreeMap代替HashMap

(当然,使用Guava Multiset会比其他人建议的更容易)

答案 1 :(得分:2)

如果你愿意引入外部依赖:Google Guava库包含Multiset的各种实现,这是你想要的东西的名称。如果您不愿意为此依赖库,您至少可以查看源代码。 Multiset基本上是某种类型的Map到一个整数,它保存集合中特定项的计数。

当然我假设你实际上可以用Multiset替换你的ArrayList。

答案 2 :(得分:1)

将内容复制到另一个数据结构中:

Map<String, Integer>

键(String)是单词,Integer值存储计数

答案 3 :(得分:1)

您还可以对列表进行排序,然后计算重复单词的次数

在输出中增加了字母顺序的奖励