使用Comparator接口排序时出现问题

时间:2011-06-02 06:22:09

标签: java comparator

我创建了一个HashMap的ArrayList,如

ArrayList<HashMap<?,?>>  var = new ArrayList<HashMap<?,?>>(); 

My HashMaps包含一个字符串值“name”,其中包含键“name”。我想要的是按名称对ArrayList进行排序,这样我可以使用Comparator吗? 请帮助我。

2 个答案:

答案 0 :(得分:3)

        ArrayList<HashMap<String,String>>  var = new ArrayList<HashMap<String,String>>();
    Collections.sort(var, new Comparator(){

        public int compare(Object o1, Object o2)
        {
            Map map1 = (Map) o1;
            Map map2 = (Map)o2;
            String name1 = (String) map1.get("name");
            String name2 = (String) map2.get("name");
            if(name1 != null){
            return name1.compareTo(name2);
            } else if(name2 != null){
            return name2.compareTo(name1);
            }else{
             return 0;
            }
        }
    }); 

这是答案。

答案 1 :(得分:1)

你可以尝试这样的事情。

public int compare(Object o1, Object o2) {
  String one = (String)((HashMap)o1).get("name");
  String two = (String)((HashMap)o2).get("name");
  return one.compareTo(two);
}

我没有编译过这个,所以一定要检查一下它是否正确。 =)