2012-08-13 34 views
3

因此,我正在瀏覽一個包含不同類型事物的長列表。假設它有不同種類食物的名稱。該列表可能是這個樣子:用於維護按頻率排序的對象類型列表的最佳數據結構

olive 
potato 
strawberry 
potato 
potato 
strawberry 

我想存儲的每個對象類型和該對象類型出現次數。而且,我不能提前列舉所有的對象類型。我不知道所有的食物都會事先做好。

我想有這樣的事情作爲輸出:

potato (3) 
strawberry (2) 
olive (1) 

基本上,對象類型在頻率的順序列表。什麼是最好的數據結構? Java中有沒有內置的類可以用來阻止我重新發明輪子?

+0

請添加語言。 – 2012-08-13 22:44:07

回答

3

您可以使用HashMap<K,V>

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

但是,如何按值排序hashmap? – dsaman123 2012-08-13 23:01:25

+0

@ dsaman123我不太確定,看看[這篇文章](http://stackoverflow.com/questions/109383/how-to-sort-a-mapkey-value-on-the-values-in- java)和[this](http://stackoverflow.com/a/8119401/706456)的答案。另請參閱google中的第一個[少量內容](https://www.google.co.uk/search?q=sort+hashmap+by+value)。你最終可能會使用不同的東西。 – oleksii 2012-08-13 23:07:17

+0

謝謝,在第一篇文章中提到的解決方案工作。 – dsaman123 2012-08-13 23:41:27

0

我會用一個類似於字典的結構。然後基本上你的算法看起來像這樣:

-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) 

然後,你可以稍後循環鍵和找到他們的頻率。

Michael G.

相關問題