2014-10-01 31 views
0

打印HashMap中我得到了與下面的輸出java的HashMap中,當我使用toString()如何排序,並在Java

{to=3, but=2, said=1, hid=1, Newton=6, by=1, eyes=2, of=2, meter=3, hide=1, his=1, on=1, drew=1, Einstein=5,......}

我的HashMap的語法如下:<String, Integer>

現在我想這樣排序:

6: Newton 
    6: and 
    5: Einstein 
    3: Pascal 
    3: found 
    3: meter 
    3: one 
    3: to 
    2: a , .... 

這意味着我必須按整數值排序。產出的「風格」也應該如上所述。任何人都可以幫助我,請明天參加考試:D

回答

2

看起來好像你想按照它的值對地圖進行排序。我不認爲有這樣的地圖實現。 TreeMap維護鍵排序,但這不會幫助你。因此,您必須編寫自己的方法來獲取地圖條目(使用entrySet()),按照值(以及相同值的鍵)對它們進行排序,然後按照您的喜好打印它們。

1

通常,「對HashMap進行排序」的方法是將鍵,值或條目集合複製到數組中,然後對數組進行排序;例如使用的Arrays.sort方法之一

在你的情況,你想提取由HashMap.entrySet()方法提供的蒐集,使用Comparator該號令Map<K,V>.Entry對象的值,然後按鍵。

打印排序條目的簡單方法是使用循環。 (我不認爲Arrays.toString是適用的,因爲Map實現通常不會覆蓋Object.toString方法。至少,javadoc不會這樣說...)

0

只需將您的準備好的映射簡單實現即可。 。!

Set<Entry<String,Integer>> s=yourmap.entrySet(); 
    List<Entry<String,Integer>> l=new ArrayList<Entry<String,Integer>>(s); 
    Collections.sort(l,new Comparator<Map.Entry<String, Integer>>() { 

     @Override 
     public int compare(Entry<String, Integer> arg0, 
       Entry<String, Integer> arg1) { 

      return (arg1.getValue().compareTo(arg0.getValue())); 
     } 

    }); 


    for(Map.Entry<String, Integer> entry:l){ 
     System.out.println("Key== "+entry.getKey()+" value= in Increasing Order=="+entry.getValue()); 
    } 

我希望這會滿足您的要求

0

我們無法實現排序上的任一按鍵或值的HashMap中。

java只提供使用它的鍵對值進行排序。在java中,我們可以使用TreeMap對MAP的鍵進行排序。

TreeMap只提供對鍵進行分類的工具。