根据元素在列表中出现的频率排列列表元素(具有重复元素)的好方法是什么。
我需要使用列表中出现频率最高的前 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/