我有关于如何计算java中ArrayList中匹配元素的问题。 例如:我的ArrayList包含[运动,运动,球,运动员,运动]
我需要输出如下:
word sport frequency 3
word ball frequency 1
word player frequency 1
感谢提前
答案 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)
您还可以对列表进行排序,然后计算重复单词的次数
在输出中增加了字母顺序的奖励