• Java中关于List<List<>>的排序和Map<key,value>按value值进行的排序(实测有用)


    1、List>排序

    根据List> 按List<>中某值中从大到小排序
    数据准备

    List<List<String>> lists = new ArrayList<>();
     List<String> list = new ArrayList<>();
     List<String> list2 = new ArrayList<>();
     List<String> list3 = new ArrayList<>();
     list.add("李一");
     list.add("2");
     list2.add("李二");
     list2.add("4");
     list3.add("李三");
     list3.add("8");
     lists.add(list);
     lists.add(list2);
     lists.add(list3);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    开始排序

    import java.util.List;
    import java.util.stream.Collectors;
    
    public class ListSortUtils {
    
        /**
         * 根据List> 按某值中从大到小排序
         * @param lists
         * @return
         */
        public static List<List<String>> sortListUtils(List<List<String>> lists) {
            lists = lists.stream().sorted((o1, o2) -> {
                for (int i = 0; i < Math.min(o1.size(), o2.size()); i++) {
                    // o1和o2调换位置就是从小到大排序
                    // 02.get(1)获取列表中index为1的值
                    int c = Integer.valueOf(o2.get(1)).compareTo(Integer.valueOf(o1.get(1)));
                    if (c != 0) {
                        return c;
                    }
                }
                return Integer.compare(o1.size(), o2.size());
            }).collect(Collectors.toList());
    
            return lists;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    直接调用这个工具类,或者将里面的内容写到自己的代码里也可以

    2、Map排序

    import java.util.HashMap;
    import java.util.LinkedHashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.stream.Collectors;
    
    public class MapSortUtils {
    
        /**
         * 根据map中的value由大到小进行排序
         */
        public static <K extends Comparable,V extends Comparable> Map<K, V> sortMapByValues(Map<K, V> map) {
            //需要用LinkedHashMap排序
            HashMap<K, V> finalMap = new LinkedHashMap<>();
            //取出map键值对Entry,然后按照值排序,最后组成一个新的列表集合
            List<Map.Entry<K, V>> list = map.entrySet()
                    .stream()
                    //sorted((p2,p1)表示由大到小排序,sorted((p1,p2)表示由小到大排序
                    .sorted((p2, p1) -> p1.getValue().compareTo(p2.getValue()))
                    .collect(Collectors.toList());
            //遍历集合,将排好序的键值对Entry放入新的map并返回。
            list.forEach(ele -> finalMap.put(ele.getKey(), ele.getValue()));
            return finalMap;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    直接调用这个工具类就可以了

  • 相关阅读:
    Valkyrie网络测试仪的使用技巧100例--No.000 目录篇
    ArcGIS中ArcMap求取点要素在栅格图像中的行列号的方法
    QT实现的一个MVP设计模式demo
    vue+express、gitee pm2部署轻量服务器
    没有可用软件包和yum源问题
    pyspark 检测任务输出目录是否空,避免读取报错
    【计组】指令和运算1--《深入浅出计算机组成原理》(二)
    路由的hash模式和history模式(适用于3.x版本的vue-router)
    算法系列:斐波那契数列问题
    systemVerilog的变量类型转换
  • 原文地址:https://blog.csdn.net/qq_46106857/article/details/127855110