我试图弄清楚如何计算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/

10-14 17:03