【发布时间】:2019-01-15 12:47:01
【问题描述】:
我试图弄清楚如何计算 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");
知道如何实现这一目标吗?
【问题讨论】:
-
没有内置函数。您必须遍历每个条目并在每次破折号后开始重新计数。
-
您的问题与安卓无关。不要错误地标记以获得生存能力。
-
@MuratK。是的,我就是这么想的。我正在讨论将每个元素添加到另一个数组列表中,直到我点击破折号,然后以这种方式调用频率函数。要么这样做,要么只是手动完成所有操作
-
您不必这样做。您可以使用
List::subList方法。但我相信手动扫描会更有效,因为您不需要一次又一次地查找每个值。 -
Splitting List into sublists along elements 有用于分组的解决方案,然后您可以从中计算频率。