所以,我正在浏览一长串不同类型的东西。假设它有不同种类的食物的名称。该列表可能如下所示:
橄榄 土豆 草莓 土豆 土豆 草莓
我想存储每种对象类型以及该对象类型出现的次数。此外,我无法提前枚举所有对象类型。我不知道所有的食物会是什么。
我想要这样的输出:
马铃薯 (3) 草莓 (2) 橄榄 (1)
基本上,按频率排列的对象类型列表。最好的数据结构是什么?Java 中有没有我可以使用的内置类来防止我不得不重新发明轮子?
所以,我正在浏览一长串不同类型的东西。假设它有不同种类的食物的名称。该列表可能如下所示:
橄榄 土豆 草莓 土豆 土豆 草莓
我想存储每种对象类型以及该对象类型出现的次数。此外,我无法提前枚举所有对象类型。我不知道所有的食物会是什么。
我想要这样的输出:
马铃薯 (3) 草莓 (2) 橄榄 (1)
基本上,按频率排列的对象类型列表。最好的数据结构是什么?Java 中有没有我可以使用的内置类来防止我不得不重新发明轮子?
您可以使用HashMap<K,V>
Map<String,int> map = new HashMap<String,int>();
我会使用类似字典的结构。然后基本上你的算法看起来像这样:
-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。