2016-03-28 22 views
2

So habe ich eine ArrayList mit einer Hashmap, die eine Liste von Songs zurückgibt. Also meine Frage ist, wie würde ich diesen Code so ändern, dass er die Lieder in alphabetischer Reihenfolge zurückgibt?Wie würde ich diese Arraylist alphabetisch sortieren?

Heres der Code ...

public ArrayList<HashMap<String, String>> getPlayList(){ 
    File home = new File(MEDIA_PATH); 

    if (home.listFiles(new FileExtensionFilter()).length > 0) { 
     for (File file : home.listFiles(new FileExtensionFilter())) { 
      HashMap<String, String> song = new HashMap<String, String>(); 
      song.put("songTitle", file.getName().substring(0, (file.getName().length() - 4))); 
      song.put("songPath", file.getPath()); 

      // Adding each song to SongList 
      songsList.add(song); 
     } 
    } 

    // return songs list array 
    return songsList; 
} 
+0

Warum verwenden Sie eine HashMap in einem Array? Verwenden Sie ein Array mit Map.Entry , wie array = new ArrayList >(); Dann könnten Sie Collections.sort verwenden und einen Vergleicher wie Benutzer "Kevingreen" implementieren. – GuilhE

+0

Vergessen Sie nicht, Ihre songsList ArrayList Variable zu definieren! –

Antwort

2

Sie Collections.sort mit einem anonymous comparator verwenden können, vergleicht Liedtitel, zB:

Collections.sort(list, new Comparator<Map<String, String>>() { 
    public int compare(Map<String, String> o1, Map<String, String> o2) { 
     if (o1.containsKey("songTitle") && o2.containsKey("songTitle")) { 
      return o1.get("songTitle").compareTo(o2.get("songTitle")); 
     } 
     return 0; 
    } 
}); 
Verwandte Themen