我试图弄清楚如何计算ArrayList
中由破折号---
分解的元素的出现。
ArrayList<String> animals = new ArrayList<String>();
animals.add("dog");
animals.add("cat");
animals.add("bat");
animals.add("bat");
animals.add("---");
animals.add("cat");
animals.add("dog");
animals.add("dog");
animals.add("---");
animals.add("bat");
animals.add("bat");
animals.add("dog");
所以我的
ArrayList
看起来像这样:animals = {"dog", "cat", "bat", "bat", "---", "cat", "dog", "dog", "---", "bat", "bat", "dog"}
我希望我的输出(按字母顺序)如下所示:
bat: 2
cat: 1
dog: 1
---
cat: 1
dog: 2
---
bat: 2
dog: 1
在我破折号之前,我通过使用这个
int occurrences = Collections.frequency(animals, "bat");
知道我该如何实现吗?
最佳答案
这主要取决于您打算如何使用每个值的频率。如果目标只是打印它,请执行以下操作:
SortedMap<String, Integer> freq = new TreeMap<>(); // to sort keys alphabetically
for (String animal : animals) {
if (animal.equals("---")) {
System.out.println(freq);
freq.clear();
} else {
freq.merge(animal, 1, Integer::sum);
}
}
System.out.println(freq);
将输出:
{bat=2, cat=1, dog=1}
{cat=1, dog=2}
{bat=2, dog=1}
关于java - 计数ArrayList分为几组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51743532/