java - 根据出现频率排列列表的元素(具有重复元素)

标签 java collections

根据元素在列表中出现的频率排列列表元素(具有重复元素)的好方法是什么。

我需要使用列表中出现频率最高的前 5 项。

我正在考虑使用 HashMap 来计算元素的频率,方法是在每次元素出现时递增相应的计数器,然后进行 5 次 HashMap 迭代以找到最高频率。每次迭代的元素。

最佳答案

这种方法怎么样?

维护一个包含计数的映射

public static Map  <Foo,Integer>;

class Foo implements Comparator<Foo>{  
      private Bar element;


      public int compare(Foo f1, Foo f2){
       return SomeClass.map.get(f1) - SomeClass.map.get(f2);
      }

    }

只需在 list 中更新 map 即可。

使用 addFooToList()removeFooFromList() 强制包装对 List 的访问,并在那里封装 map 更新逻辑。

关于java - 根据出现频率排列列表的元素(具有重复元素),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5989758/

相关文章:

scala - 获取 Scala 中 List[Option] 中具有值的所有条目

java - 有没有更快的方法从对象集合中提取唯一值?

c++ - 如何正确编写模板模板参数?

java - 嵌套泛型类型中的泛型类型参数

java - 这样的界面设计会不会被认为是不好的?

java - Spring 启动 : Handle Custom Exceptions using ControllerAdvice for REST

java - Hibernate + ehcache 二级缓存未命中的简单示例

java - 无法通过 java api 将图像文件上传到 Google Doc

java - 重命名 Realm 表

firebase - Firebase搜索查询返回空结果