作为初级开发,排序的问题真的是太常见了,不同的数据类型有不同的排序方式。很早以前我写过快速排序,选择排序,冒泡排序等。在和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数据类型一样可以排序。
当然还有很多种方式去进行排序,也学我这不是最好的但是我这个是最简单快捷的,希望有问题的朋友能留下言,互帮互助、取长补短共同进步!
有兴趣的借鉴参考一下吧!