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

1、List<List<>>排序

根据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);

开始排序

import java.util.List;
import java.util.stream.Collectors;

public class ListSortUtils {

    /**
     * 根据List<List<String>> 按某值中从大到小排序
     * @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;
    }
}

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

2、Map<key,value>排序

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<K,V>,然后按照值排序,最后组成一个新的列表集合
        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<K,V>放入新的map并返回。
        list.forEach(ele -> finalMap.put(ele.getKey(), ele.getValue()));
        return finalMap;
    }
}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊凯瑞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值