Java中List集合按指定条件排序

 更新时间:2023年07月04日 09:09:11   作者:长安明月  
这篇文章主要介绍了Java中List集合按指定条件排序,List是一种有序集合,可以随时添加和删除其中元素,本篇文章针对List集合按照条件排序的几种方式做了实例演示,需要的朋友可以参考下

一、排序场景

List 保存着一组乱序排列的字符串,Map 中保存着该组字符串各自的优先级。优先级数字从低到高表示优先级依次递减。要求将 List 中的字符串,按照优先级从高到低排序。

二、指定条件排序

实现 List 排序有多种方法,本文总结以下几种。

2.1 调用 list sort 方法,实现比较器接口进行排序

package com.example.demo.help;
import java.util.*;
public class ListSortTest {
    public static void main(String[] args) {
        List<String> rules = new ArrayList<>();
        rules.add("30003");
        rules.add("20002");
        rules.add("10001");
        rules.add("40004");
        rules.add("60006");
        rules.add("50005");
        Map<String, Integer> ruleUpper = new HashMap<>();
        ruleUpper.put("10001", 1);
        ruleUpper.put("20002", 2);
        ruleUpper.put("30003", 3);
        ruleUpper.put("40004", 4);
        rules.sort(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return ruleUpper.getOrDefault(o1, Integer.MAX_VALUE) - ruleUpper.getOrDefault(o2, Integer.MAX_VALUE);
            }
        });
        System.out.println(rules);
        // [10001, 20002, 30003, 40004, 60006, 50005]
    }
}

2.2 调用 list sort 方法,通过 lambda 表达式实现排序

package com.example.demo.help;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ListSortTest {
    public static void main(String[] args) {
        List<String> rules = new ArrayList<>();
        rules.add("30003");
        rules.add("20002");
        rules.add("10001");
        rules.add("40004");
        rules.add("60006");
        rules.add("50005");
        Map<String, Integer> ruleUpper = new HashMap<>();
        ruleUpper.put("10001", 1);
        ruleUpper.put("20002", 2);
        ruleUpper.put("30003", 3);
        ruleUpper.put("40004", 4);
        rules.sort((o1, o2) -> (ruleUpper.getOrDefault(o1, Integer.MAX_VALUE) - ruleUpper.getOrDefault(o2, Integer.MAX_VALUE)));
        System.out.println(rules);
        // [10001, 20002, 30003, 40004, 60006, 50005]
    }
}

2.3 通过 Collections sort 方法,实现比较器接口进行排序

package com.example.demo.help;
import java.util.*;
public class ListSortTest {
    public static void main(String[] args) {
        List<String> rules = new ArrayList<>();
        rules.add("30003");
        rules.add("20002");
        rules.add("10001");
        rules.add("40004");
        rules.add("60006");
        rules.add("50005");
        Map<String, Integer> ruleUpper = new HashMap<>();
        ruleUpper.put("10001", 1);
        ruleUpper.put("20002", 2);
        ruleUpper.put("30003", 3);
        ruleUpper.put("40004", 4);
        Collections.sort(rules, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return ruleUpper.getOrDefault(o1, Integer.MAX_VALUE) - ruleUpper.getOrDefault(o2, Integer.MAX_VALUE);
            }
        });
        System.out.println(rules);
        // [10001, 20002, 30003, 40004, 60006, 50005]
    }
}

到此这篇关于Java中List集合按指定条件排序的文章就介绍到这了,更多相关List指定条件排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中Map的九种遍历方式总结

    Java中Map的九种遍历方式总结

    日常工作中 Map 绝对是我们 Java 程序员高频使用的一种数据结构,那 Map 都有哪些遍历方式呢?这篇文章就带大家看一下,看看你经常使用的是哪一种
    2022-11-11
  • Java实现实时监控目录下文件变化的方法

    Java实现实时监控目录下文件变化的方法

    今天小编就为大家分享一篇关于Java实现实时监控目录下文件变化的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 深入分析JAVA 建造者模式

    深入分析JAVA 建造者模式

    这篇文章主要介绍了JAVA 建造者模式的的相关资料,文中讲解非常详细,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • 剖析Fork join并发框架工作窃取算法

    剖析Fork join并发框架工作窃取算法

    这篇文章主要为大家剖析介绍了Fork join并发框架工作窃取算法的示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • java实现斗地主游戏

    java实现斗地主游戏

    这篇文章主要为大家详细介绍了java实现斗地主游戏,洗牌、发牌、看牌,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Spring Boot2.0中SpringWebContext找不到无法使用的解决方法

    Spring Boot2.0中SpringWebContext找不到无法使用的解决方法

    这篇文章主要给大家介绍了关于Spring Boot2.0中SpringWebContext找不到无法使用的解决方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-12-12
  • java中Javers 比较两个类的差异

    java中Javers 比较两个类的差异

    本文主要介绍了Javers 比较两个类的差异,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • java压缩文件和下载图片示例

    java压缩文件和下载图片示例

    这篇文章主要为大家详细介绍了java压缩文件和下载图片示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • SpringBoot整合mybatis的方法详解

    SpringBoot整合mybatis的方法详解

    这篇文章主要为大家详细介绍了SpringBoot整合mybatis的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • JDK1.7的ConcurrentHashMap源码解析

    JDK1.7的ConcurrentHashMap源码解析

    这篇文章主要介绍了JDK1.7的ConcurrentHashMap源码解析,HashMap是非线程安全的,而HashTable是线程安全的,但是HashTable实现同步的方法比较暴力,即在所有的方法体上添加synchronized关键字,需要的朋友可以参考下
    2023-12-12

最新评论