首页 新闻 会员 周边 捐助

Collections.sort(list,new Comparator) 的一些问题;

0
悬赏园豆:5 [已解决问题] 解决于 2016-09-01 09:31
public static void main(String[] args) {
        List<Map<String, String>> list = new ArrayList<>();
        Map<String, String> map = new HashMap<>();
        Map<String, String> map1 = new HashMap<>();
        Map<String, String> map2 = new HashMap<>();
        Map<String, String> map3 = new HashMap<>();
        map.put("name", "zhangsan");
        map.put("sortRule", "d");
        map1.put("name", "lisi");
        map1.put("sortRule", "a");
        map2.put("name", "wangwu");
        map2.put("sortRule", "b");
        map3.put("name", "wangwu");
        map3.put("sortRule", "a");
        list.add(map);
        list.add(map1);
        list.add(map2);
        list.add(map3);
        System.out.println("排序前:"+list);
        Collections.sort(list, new Comparator<Map<String, String>>() {
            @Override
            public int compare(Map<String, String> m1, Map<String, String> m2) {
                String m1Key = m1.get("sortRule");
                String m2Key = m2.get("sortRule");
                int i = m1Key.compareTo(m2Key);
                if(i>0){
                    return 1;
                }else if(i<0){
                    return -1;
                }else{
                    return 0;
                }
            }
        }); 
        System.out.println("排序后:"+list);
    }

重写的compare方法返回值有有啥用,根据什么来排序的?

gzu_lmc的主页 gzu_lmc | 初学一级 | 园豆:7
提问于:2016-09-01 01:28
< >
分享
最佳答案
0
int i = m1Key.compareTo(m2Key);
                if(i>0){
                    return 1;
                }else if(i<0){
                    return -1;
                }else{
                    return 0;
                }
//替换成 
return  m1Key.compareTo(m2Key); 
//更简洁

有啥用: 这个返回值代表了被比较的那两个东西谁大谁小,1就是前面的大,0是一样,-1是后面的大。

根据什么来排序的:根据两个map中的sortRule的值

收获园豆:5
之奇一昂 | 小虾三级 |园豆:1421 | 2016-09-01 08:09

多谢

gzu_lmc | 园豆:7 (初学一级) | 2016-09-01 08:30
其他回答(1)
0

这应该跟js,.net的sort一样,大于0表示前面的大,小于0表示后面的大,等于0表示一样大,这里的大于0,可能固定是1,也可能是一般是1,小于0,也可能固定是-1,也可能一般是-1,习惯。

顾晓北 | 园豆:10898 (专家六级) | 2016-09-01 08:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册