Java对"List"数据类型中某一个value值进行排序,Collections.sort()方法

作为初级开发,排序的问题真的是太常见了,不同的数据类型有不同的排序方式。很早以前我写过快速排序,选择排序,冒泡排序等。在和python同事聊天的时候,他跟我说他们的语言里面自带着函数进行排序,快速排序在他们那边算是最简单的一种了。。。自己以前记得,我们java里面有一个collections类也是对数据类型进行操作的。于是自己想了一想,查了查资料,找到了它自带的排序方法。今天和大家一起学习Collections.sort()方法,collections应该都很熟悉了,是一个操作集合的工具类,里面有不少方法,其中的sort()就是针对有泛型一类的数据等进行排序。在这我也写了一个小demo供大家参考。

一、

首先写几个数据进行测试。
在这里插入图片描述
打印排序前结果
在这里插入图片描述
贴出我自己的代码供大家方便使用:

 @org.junit.Test
    public void Test1(){
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        Map<String, Object> map1 = new HashMap<String, Object>();
        map1.put("name", "JAVA研发部");
        map1.put("member", "279");
        Map<String, Object> map2 = new HashMap<String, Object>();
        map2.put("name", "南京维数");
        map2.put("member", "172");
        Map<String, Object> map3 = new HashMap<String, Object>();
        map3.put("name", "GB项目组");
        map3.put("member", "7");
        Map<String, Object> map4 = new HashMap<String, Object>();
        map4.put("name", "GA事业一部");
        map4.put("member", "34");
        Map<String, Object> map5 = new HashMap<String, Object>();
        map5.put("name", "zym");
        map5.put("member", "1");
        list.add(map1);
        list.add(map3);
        list.add(map2);
        list.add(map4);
        list.add(map5);
        //排序前
        for (Map<String, Object> map : list) {
            System.err.println(map.get("member"));
        }
      }

二、使用Collections.sort()给List中的Map 对应的key-"member"的值进行排序

写下代码如下,注意的是,member对应的value的值是属于String类型,因此在排序过程中要进行数据类型的转换,如下
在这里插入图片描述

控制台打印:
在这里插入图片描述
如此复杂的一个List<Map>结构的排序就搞定了,很简单吧!,贴下排序的代码

 Collections.sort(list, new Comparator<Map<String, Object>>() {
            public int compare(Map<String, Object> o1, Map<String, Object> o2) {
                Integer one = Integer.valueOf(o1.get("member").toString()) ;//one是从你list里面拿出来的一个
                Integer two = Integer.valueOf(o2.get("member").toString()) ; //two是从你list里面拿出来的第二个name
                return one.compareTo(two);
            }
        });
        //排序后
        System.out.println("--------排序后↓↓↓↓↓↓↓-----------");
        for (Map<String, Object> map : list) {
            System.out.println(map.get("member"));
        }

当然了,若Map里面的是String类型同样也可以排序,如果我没有记错的话,应该是用阿斯克码进项大小的比较,如下
在这里插入图片描述

看下控制台的结果:
在这里插入图片描述

一样的效果,可见Stirng数据类型一样可以排序。
当然还有很多种方式去进行排序,也学我这不是最好的但是我这个是最简单快捷的,希望有问题的朋友能留下言,互帮互助、取长补短共同进步!

有兴趣的借鉴参考一下吧!

猜你喜欢

转载自blog.csdn.net/goGoing_/article/details/100176409