我有一个这样创建的列表变量:
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);
我正在使用 list
在 ListView
中显示结果通过扩展 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/