如何对LinkedHashMap的Arraylist进行排序
防爆。
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&amp;的ArrayList。我想以Ref为关键字排序值(如按城市排序或按名称排序)
我有完成LinkedHashMap(没有Arraylist)使用Collection.Sort&amp;进行排序。可比的。
但是我怎样才能对LinkedHashMap的Arraylist进行排序(使用Loop或Iterator它可能,但还有其他简单的方法吗?)
感谢
答案 0 :(得分:3)
您可以实施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;
}
});
答案 1 :(得分:0)
或者你可以这样做:
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")));
}
});