java - 对 Map<String, String> 的列表进行排序

标签 java android sorting

我有一个这样创建的列表变量:

List<Map<String, String>> list = new ArrayList<Map<String, String>>();

在我的 Android 应用程序中,此列表被填充。

只是一个例子:

Map<String, String> map1 = new HashMap<String, String>();
map.put("name", "Josh");
...

Map<String, String> map2 = new HashMap<String, String>();
map.put("name", "Anna");
...

Map<String, String> map3 = new HashMap<String, String>();
map.put("name", "Bernie");
...

list.add(map1);
list.add(map2);
list.add(map3);

我正在使用 listListView 中显示结果通过扩展 BaseAdapter并实现各种方法。

我的问题:我需要排序 list根据 map 键 name

的字母顺序

问题:有什么简单的排序方法list根据 map 的键name按字母顺序排列?

我似乎无法理解这一点。我从每个 Map 中提取了每个 name变成 String数组,并对其进行排序(Arrays.sort(strArray);)。但这不会保留每个 Map 中的其他数据,所以我不太确定如何保留其他映射值

最佳答案

以下代码完美运行

public Comparator<Map<String, String>> mapComparator = new Comparator<Map<String, String>>() {
    public int compare(Map<String, String> m1, Map<String, String> m2) {
        return m1.get("name").compareTo(m2.get("name"));
    }
}

Collections.sort(list, mapComparator);

但您的 map 可能应该是特定类的实例。

关于java - 对 Map<String, String> 的列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5155952/

相关文章:

java - 是否可以在java servlet中准确判断客户端的IP地址

java - JSlider 修改 JLabel 大小

java - 以编程方式将布局添加到 fragment

java - 使用数组列表的排序算法

java - 按名称排序文件返回未排序的数组

java - Android - DownloadManager - 清除队列中的旧下载

android - 在单个 Android 应用程序中使用多个 firebase 帐户进行谷歌分析

android - 以编程方式确定 Android 应用程序是否已付款

Python:按数组长度对二维数组进行排序?

java - 如何在 java 中使用 N 个线程对 M 个数字的数组进行排序?