【发布时间】:2011-07-06 13:42:43
【问题描述】:
我有一个这样创建的列表变量:
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 通过扩展BaseAdapter 并实现各种方法来在ListView 中显示结果。
我的问题:我需要根据地图的键name
按字母顺序对list进行排序
问题:根据地图的键name,按字母顺序对list 进行排序的简单方法是什么?
我似乎无法理解这一点。我已将每个 Map 中的每个 name 提取到 String 数组中,并对其进行排序(Arrays.sort(strArray);)。但这并没有保留每个 Map 中的其他数据,所以我不太确定如何保留其他映射值
【问题讨论】:
-
@DLK,知道如何编写自定义比较器正是 binnyb 所发现的。
-
@Jon Skeet 和@JB Nizet 的回答都正确指出
Map可能是您记录的错误选择。具有属性/获取器/设置器的自定义类会更好。为什么? 1) 健壮性/类型安全,2) 内存使用,3) 性能,4) 更简单的代码。 -
感谢您的提示,我会考虑更改设置方式。
-
这是我第一次需要在 java 编程中进行排序,而不是使用 SQL
order by。我在提问之前尝试过寻找答案,但我找不到足够的答案来解决我的问题。抱歉打扰了! -
@binnyb - 不要道歉。我在谷歌上搜索了一个解决方案,你的问题提供了所有这些很好的答案。来自一个不同的平台,我不知道比较器,现在,几分钟之内,我知道了。这些就是 StackOverflow 的奇妙之处。投赞成票!