【问题标题】:How can i sort my arraylist alphabetical我如何按字母顺序对我的数组列表进行排序
【发布时间】:2013-11-03 19:13:29
【问题描述】:

我想按字母顺序对数组列表进行排序,但我不明白...也许你可以帮助我。我不知道为什么,但我不能使用 collections.sort ......我编码错了什么? 非常感谢您的帮助和时间,Vinzenz

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


}

【问题讨论】:

  • 请给我们一个Short, Self Contained, Correct Example 来显示您的问题。
  • 编写一个比较器类,以便按照您想要的方式对您的 arrylist 进行排序
  • 你打算如何排序呢?你能发布一些输入和预期输出的例子吗?你也不能在 HashMap 中排序。

标签: java eclipse sorting arraylist alphabetical


【解决方案1】:

使用Collections.sort

Collections.sort(listOfStrings, String.CASE_INSENSITIVE_ORDER);

详情请参阅以下内容:

String.CASE_INSENSITIVE_ORDER

Collections.sort

您还可以创建自定义Comparator,而不是使用String.CASE_INSENSITIVE_ORDER

【讨论】:

  • 我不知道为什么,但它对我不起作用......你能告诉我我必须做什么转移到我的例子吗?......我真的不明白:/
【解决方案2】:

您必须实现自己的Comparator&lt;HashMap&lt;String,String&gt;&gt; 并将其传递给Collections.sort

【讨论】:

    猜你喜欢
    • 2016-07-15
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多