【问题标题】:Best data structure for maintaining a list of object-types sorted by frequency维护按频率排序的对象类型列表的最佳数据结构
【发布时间】:2012-08-13 22:40:28
【问题描述】:

所以,我正在浏览一个包含不同类型事物的长列表。假设它有不同种类的食物的名称。该列表可能如下所示:

橄榄
土豆
草莓
土豆
土豆
草莓

我想存储每个对象类型以及该对象类型出现的次数。此外,我无法提前枚举所有对象类型。我不知道所有的食物会是什么。

我想要这样的输出:

马铃薯 (3)
草莓 (2)
橄榄 (1)

基本上,按频率排列的对象类型列表。最好的数据结构是什么?有没有我可以使用的 Java 内置类来避免我不得不重新发明轮子?

【问题讨论】:

  • 请添加语言。

标签: data-structures frequency sortedlist


【解决方案1】:

您可以使用HashMap<K,V>

Map<String,int> map = new HashMap<String,int>();

【讨论】:

  • 但是如何按值对 hashmap 进行排序?
  • @dsaman123 我不太确定,看看this postthis 的答案。另请参阅谷歌中的第一个 few enties。你最终可能会使用不同的东西。
【解决方案2】:

我会使用类似字典的结构。那么基本上你的算法应该是这样的:

-Begin Loop
    If current element not a key in dictionary:
        dictionary(element) -> 0 (Dictionary at key 'element' refers to 0)
    Else:
        dictionary(element)++ (increment dictionary at key)

然后您可以稍后循环遍历这些键并找到它们的频率。

迈克尔 G.

【讨论】:

    猜你喜欢
    • 2021-12-12
    • 2011-02-19
    • 2014-11-07
    • 2021-01-20
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    相关资源
    最近更新 更多