2012-10-08 35 views
0

基本上排序的HashMap的ArrayList,我有一個ArrayList的聲明如下:根據HashMap中的值字段

private ArrayList<HashMap<String, String>> songsList = 
          new ArrayList<HashMap<String, String>>(); 
現在

什麼,我想要做的是,對每個關鍵我想舉兩個值字段。可以這樣做嗎?

其次,我想根據值對對鍵值對進行排序。那麼如何實現?

+0

您是否閱讀過Map和Collection文檔? – Blackbelt

回答

1

這是很多String對象。你有沒有考慮使用Object封裝你的數據結構,而不是複雜的字符串集合?例如,假設您的地圖鍵一首歌:

public Song implements Comparable<Song> { 
    private String title; 
    private String artist; 
    private String album; 

    public Song(String title, String artist, String album) { 
     ... 
    } 

    public int compareTo(Song s) { 
     // sorting logic 
    } 

    ... // getters, setters, equals & hashCode 
} 

然後,創建的歌曲列表:

List<Song> songs = new ArrayList<Song>(); 
songs.add(new Song("Dancing Queen", "Abba", "Arrival"); // I had to find this on Wikipedia 
... 

然後對它們進行排序:

Collections.sort(songs); 
+0

我同意這一點。我還建議實現equals()和hashcode()以正確地存儲/檢索標準集合中的實例。 – acerisara

+0

那麼Collections.sort()爲排序方法調用用戶定義類的compareTo()? – Saurabh

+0

是的。看看Comparable界面。還有一個比較感興趣的是Comparator接口,它將排序邏輯外化。 –

0

您可以實現媲美接口爲你的排序問題。並且爲了在地圖中有一個值的多個值,可以使用getter和setter創建一個具有所需值的類。並且將這個班級作爲一個關鍵的價值。