首页 > 其他分享 >Collections.sort()排序方法

Collections.sort()排序方法

时间:2022-12-29 15:00:15浏览次数:42  
标签:sort map name chinese list Collections put 排序 id

Collections.sort()方法详解

是对数据进行排序的一个方法,根据指定比较器产生的顺序对指定列表进行排序。

  • Collections.sort() 排序 (倒叙排序)
  • 返回值:return a.compareTo(b) 就排序了,为什么呢?
  • compareTo() 这个方法,它返回了3种int类型的值:
  1. 负整数 : a < b,位置排在前面
  2. 零 : a = b, 位置不变
  3. 正整数 : a > b, 位置排在后面
点击查看代码
public static <T> void sort(List<T> list, Comparator<? super T> c) {
	list.sort(c);
}

参数说明:

  • list : 要排序的list集合
  • c : 确定列表数据的比较器
  • T : 列表中对象的类型,可以是map,set,list,bean等,要保证集合中的对象是可以被比较的

使用demo

点击查看代码
public static void main(String[] args) {

        List<Map<String, Object>> list = new ArrayList<>();
        list.add(new HashMap<String, Object>(){{put("id",2);put("name", "bbb");put("chinese", "992");}});
        list.add(new HashMap<String, Object>(){{put("id",3);put("name", "ccc");put("chinese", "993");}});
        list.add(new HashMap<String, Object>(){{put("id",1);put("name", "aaa");put("chinese", "991");}});
        list.add(new HashMap<String, Object>(){{put("id",4);put("name", "bbb");put("chinese", "994");}});

        for (Map<String, Object> stringObjectMap : list) {
            System.out.println("---map:" + stringObjectMap);
        }
        System.out.println("-----------------");
        Collections.sort(list, new Comparator<Map<String, Object>>() {
            @Override
            public int compare(Map<String, Object> o1, Map<String, Object> o2) {
                String id2 = o2.get("id").toString();
                String name2 = o2.get("name").toString();
                String id1 = o1.get("id").toString();
                String name1 = o1.get("name").toString();
//                return id2.compareTo(id1);
                return name2.compareTo(name1);
            }
        });

        for (Map<String, Object> stringObjectMap : list) {
            System.out.println("---map:" + stringObjectMap);
        }
    }

输出结果:

点击查看代码
Connected to the target VM, address: '127.0.0.1:56834', transport: 'socket'
---map:{chinese=992, name=bbb, id=2}
---map:{chinese=993, name=ccc, id=3}
---map:{chinese=991, name=aaa, id=1}
---map:{chinese=994, name=bbb, id=4}
-----------------
---map:{chinese=993, name=ccc, id=3}
---map:{chinese=992, name=bbb, id=2}
---map:{chinese=994, name=bbb, id=4}
---map:{chinese=991, name=aaa, id=1}
Disconnected from the target VM, address: '127.0.0.1:56834', transport: 'socket'

标签:sort,map,name,chinese,list,Collections,put,排序,id
From: https://www.cnblogs.com/zlonger/p/17012549.html

相关文章

  • js 实现版本号排序
    //方法一:从左到右迭代,从高位判断,返回高位的大小结果注意:仅适用于版本号各个位的位数相同letversions=["1.45.0","1.5","6","2.3.4.5"];versions=versions.sor......
  • 大整数排序
    题目描述小南有n个整数,这些整数都非常大,所以没有办法采用整数排序的方法处理,请聪明的你帮小南编写程序完成这些整数由小到大的排序。输入输入包含多组测试用例。......
  • 排序-希尔排序
    希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几......
  • 排序-插入排序
    插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,......
  • 堆排序
    本题要求实现堆排序中的筛选函数,待排序列的长度1<=n<=1000。函数接口定义:voidHeapAdjust(HeapTypeH,ints,intm);其中L是待排序表,使排序后的数据从小到大......
  • 归并排序
    本题要求实现二路归并排序中的归并操作,待排序列的长度1<=n<=1000。函数接口定义:voidMerge(SqListL,intlow,intm,inthigh);其中L是待排序表,使排序后的数据从......
  • 内部排序算法的比较
    目录内部排序算法的比较内部排序算法的比较算法种类最好时间复杂度平均时间复杂度最坏时间复杂度空间复杂度是否稳定排序趟数与序列初态有无关系比较次数与序......
  • 61.对一个整数数组排序
    61.对一个整数数组排序输入一个整数m,然后输入m个整数存入数组,用一个指针数组分别指向该数组的对应元素。要求,在不改变原始数组顺序的情况下,通过指针数组对数据按升......
  • pandas 排序
    目录​​pd.sort_values()​​​​单字段排序​​​​多字段排序​​pd.sort_values()单字段排序多字段排序......
  • D. Absolute Sorting
    D.AbsoluteSorting思路:如果a[i]>=a[i-1],那么我们最大可以减去(a[i]+a[i-1])/2,这样减完依旧是满足a[i]>=a[i-1]的。因此我们可以把所有满足a[i]>=a[i-1]......