如何对LinkedHashMap的数组列表进行排序
例如。
ArrayList<LinkedHashMap<String, String>> list = new ArrayList<LinkedHashMap<String, String>>();
LinkedHashMap<String, String> linkedHashMap = new LinkedHashMap<String, String>();
linkedHashMap.put("city", "AB");
linkedHashMap.put("name", "N");
linkedHashMap.put("area", "xyz");
list.add(linkedHashMap);
linkedHashMap = new LinkedHashMap<String, String>();
linkedHashMap.put("city", "BA");
linkedHashMap.put("name", "AB");
linkedHashMap.put("area", "xyz");
list.add(linkedHashMap);
linkedHashMap = new LinkedHashMap<String, String>();
linkedHashMap.put("city", "CH");
linkedHashMap.put("name", "AB");
linkedHashMap.put("area", "PQ");
list.add(linkedHashMap);上面是我的LinkedHashMap的ArrayList &我想要以引用为关键字对值进行排序(如按城市排序或按名称排序)
我已经使用Collection.Sort &LinkedHashMap进行过可比较排序(不使用数组列表)。
但是我如何对我的LinkedHashMap数组列表进行排序(使用循环或迭代器可能是可行的,但是有没有其他简单的方法呢?)谢谢
发布于 2012-03-07 13:43:21
您可以实现Comparator<T>并使用Collections.sort按LinkedHashMap的特定值进行排序
然而,在您的情况下,您应该利用类。创建一个用LinkedHashMap表示数据的类
public class MyClass {
private String city;
private String name;
private String area;
// implement some getters here.
}然后,再次使用Collections.sort,并实现所需的比较器
List<MyClass> myClasses = getMyClasses();
Collections.sort(myClasses, new Comparator<MyClass>(){
@Override
public int compare(MyClass o1, MyClass o2) {
// implement sorting behavior you want.
return 0;
}
});发布于 2012-11-21 20:51:17
或者,您可以执行以下操作:
Collections.sort(list ,
new Comparator<LinkedHashMap<String, String>>()
{
@Override
public int compare(LinkedHashMap<String, String> obj1,
LinkedHashMap<String, String> obj2)
{
return (obj1.get("city").compareTo(obj2.get("city")));
}
});https://stackoverflow.com/questions/9596306
复制相似问题