我有一个包含 5 个元素的数组列表,每个元素都是一个枚举。我想构建一个方法,它返回另一个数组列表,其中包含列表中最常见的元素。
示例 1:
[Activities.WALKING, Activities.WALKING, Activities.WALKING, Activities.JOGGING, Activities.STANDING]
方法将返回:[Activities.WALKING]
示例 2:
[Activities.WALKING, Activities.WALKING, Activities.JOGGING, Activities.JOGGING, Activities.STANDING]
方法将返回:[Activities.WALKING, Activities.JOGGING]
我尝试过什么:
我的想法是为每个 Activity 声明一个计数,但这意味着如果我想添加另一个 Activity ,我必须修改代码来为该 Activity 添加另一个计数。
另一个想法是声明 HashMap<Activities, Integer>
并迭代数组以插入每个 Activity 及其在其中发生的情况。那么我该如何提取出现次数最多的 Activity 呢?
你们能帮帮我吗?
最佳答案
实现此类操作的最常见方法是使用 Map
进行计数。 :定义一个Map<MyEnum,Integer>
它为枚举的每个元素存储零。然后遍历列表,并为列表中找到的每个元素增加计数器。同时维持当前的max
数数。最后,遍历计数器映射条目,并将其计数与 max
的值匹配的所有条目的键添加到输出列表中。 .
关于java - 在 Java 中查找 ArrayList 中最常见/最频繁的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15600982/