2013-11-03 296 views
0

我想排序我的arraylist按字母排序,但我不明白...也許你可以幫助我。我不知道爲什麼,但我不能與collections.sort一起工作...我編碼錯了什麼? 非常感謝您的幫助和時間,Vinzenz我如何排序我的arraylist按字母順序排列

public class SongsManager { 

    final String MEDIA_PATH = Environment.getExternalStorageDirectory() 
      .getPath() + "/"; 
    private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>(); 
    private String mp3Pattern = ".mp3"; 
    private String mp4Pattern = ".mp4"; 
    private String MP3Pattern = ".MP3"; 
    private String MP4Pattern = ".MP4"; 
    private String m4aPattern = ".m4a"; 

    // Constructor 
    public SongsManager() { 

    } 

    /** 
    * Function to read all mp3 files and store the details in 
    * ArrayList 
    * */ 
    public ArrayList<HashMap<String, String>> getPlayList() { 
     System.out.println(MEDIA_PATH); 
     if (MEDIA_PATH != null) { 
      File home = new File(MEDIA_PATH); 
      File[] listFiles = home.listFiles(); 
      if (listFiles != null && listFiles.length > 0) { 
       for (File file : listFiles) { 
        System.out.println(file.getAbsolutePath()); 
        if (file.isDirectory()) { 
         scanDirectory(file); 
        } else { 
         addSongToList(file); 
        } 
       } 
      } 

     } 
     // return songs list array 
     return songsList; 



    } 

    private void scanDirectory(File directory) { 
     if (directory != null) { 
      File[] listFiles = directory.listFiles(); 
      if (listFiles != null && listFiles.length > 0) { 
       for (File file : listFiles) { 
        if (file.isDirectory()) { 
         scanDirectory(file); 
        } else { 
         addSongToList(file); 

        } 

       } 
      } 
     } 
    } 

    private void addSongToList(File song) { 
     if (song.getName().endsWith(mp3Pattern) || song.getName().endsWith(mp4Pattern) || song.getName().endsWith(MP4Pattern) || song.getName().endsWith(MP3Pattern) || song.getName().endsWith(m4aPattern)) { 
      HashMap<String, String> songMap = new HashMap<String, String>(); 
      songMap.put("songTitle", 
        song.getName().substring(0, (song.getName().length() - 4))); 
      songMap.put("songPath", song.getPath()); 

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


} 
+0

請給我們一個[Short,Self Contained,Correct Example](http://sscce.org/),顯示你的問題。 –

+0

編寫一個比較器類來排序你的arrylist他們的方式你想排序它 –

+0

你打算如何排序它?你能發表一些輸入和期望輸出的例子嗎?你也不能在HashMap裏面排序。 – Pshemo

回答

0

你必須實現自己的Comparator<HashMap<String,String>>,並把它傳遞給Collections.sort

2

使用Collections.sort

Collections.sort(listOfStrings, String.CASE_INSENSITIVE_ORDER); 

詳情請參閱以下內容:

String.CASE_INSENSITIVE_ORDER

Collections.sort

您還可以創建自定義Comparator,而不是使用String.CASE_INSENSITIVE_ORDER

+0

我不知道爲什麼,但它不適用於我...你能告訴我我必須做什麼轉移到我的例子嗎?...我真的不明白:/ – vinzzenzz