如何计算列表中元素的出现次数

2022-08-31 05:51:54

我有一个,一个Java的集合类,如下所示:ArrayList

ArrayList<String> animals = new ArrayList<String>();
animals.add("bat");
animals.add("owl");
animals.add("bat");
animals.add("bat");

如您所见,由3个元素和一个元素组成。我想知道收集框架中是否有任何API返回发生次数,或者是否有另一种方法可以确定发生次数。animalsArrayListbatowlbat

我发现Google的Collection确实有一个API,可以返回元素的总出现次数。但这只与JDK 1.5兼容。我们的产品目前在JDK 1.6中,所以我不能使用它。Multiset


答案 1

我很确定集合中的静态频率方法会在这里派上用场:

int occurrences = Collections.frequency(animals, "bat");

无论如何,我就是这样做的。我很确定这是jdk 1.6直升。


答案 2

在Java 8中:

Map<String, Long> counts =
    list.stream().collect(Collectors.groupingBy(e -> e, Collectors.counting()));