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指定条件排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解SpringBoot 统一后端返回格式的方法

    详解SpringBoot 统一后端返回格式的方法

    今天我们来聊一聊在基于SpringBoot前后端分离开发模式下,如何友好的返回统一的标准格式以及如何优雅的处理全局异常,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2022-05-05
  • Java之MyBatis的Dao方式以及Dao动态代理详解

    Java之MyBatis的Dao方式以及Dao动态代理详解

    这篇文章主要介绍了Java之MyBatis的Dao方式以及Dao动态代理详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Java常用字符串方法小结

    Java常用字符串方法小结

    字符串变量是Java与C语言的一大不同之处。Java之中的 String 类和 Stringbuffer 类提供了大量的对字符串操作的方法。String 类适合处理较小的字符串,而Stringbuffer类适合处理大量字符串
    2017-04-04
  • ThreadLocal 在上下文传值场景实践源码

    ThreadLocal 在上下文传值场景实践源码

    这篇文章主要为大家介绍了ThreadLocal在上下文传值场景下的实践源码,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • 学生视角手把手带你写Java 线程池初版

    学生视角手把手带你写Java 线程池初版

    作者是一个来自河源的大三在校生,以下笔记都是作者自学之路的一些浅薄经验,如有错误请指正,将来会不断的完善笔记,帮助更多的Java爱好者入门
    2022-03-03
  • Gateway集成Netty服务的配置加载详解

    Gateway集成Netty服务的配置加载详解

    这篇文章主要为大家介绍了Gateway集成Netty服务的配置加载详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • java自动生成接口文档完整代码示例

    java自动生成接口文档完整代码示例

    在软件开发中,编写接口文档是一项必要但繁琐的任务,为了简化这一过程,可以通过使用Swagger2和Swagger-UI来自动生成接口文档,这篇文章主要介绍了java自动生成接口文档的相关资料,需要的朋友可以参考下
    2021-07-07
  • JAVA SPI特性及简单应用代码实例

    JAVA SPI特性及简单应用代码实例

    这篇文章主要介绍了JAVA SPI特性及简单应用代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Springboot整合activemq的方法步骤

    Springboot整合activemq的方法步骤

    这篇文章主要介绍了Springboot整合activemq的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • IDEA运行Tomcat中文乱码出现的各种问题

    IDEA运行Tomcat中文乱码出现的各种问题

    这篇文章主要介绍了IDEA运行Tomcat中文乱码的各种问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11

最新评论