java中list集合根据枚举类型排序

自定义枚举类

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import java.util.Arrays;
@Getter
@NoArgsConstructor
@AllArgsConstructor
public enum ProContant {QCC("QCC",1),FQCC("FQCC",2),HELIHUA("合理化",3),TOPN("TOPN",4),HEIDAI("黑带",5),LVDAI("绿带",6);private String key;private Integer index;public static ProContant getProContant(String str) {return Arrays.stream(ProContant.values()).filter(proContant -> str.equals(proContant.getKey())).findFirst().orElse(null);}
}

测试

import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;public class Test {public static void main(String[] args) {List<String> list = Arrays.asList("绿带", "合理化", "黑带", "QCC", "FQCC", "TOPN");System.out.println("原集合:"+list);Collections.sort(list, new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {return ProContant.getProContant(o1).getIndex() - ProContant.getProContant(o2).getIndex();}});System.out.println("排序后的集合"+list);}
}

简写方式

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class Test {public static void main(String[] args) {List<String> list = Arrays.asList("绿带", "合理化", "黑带", "QCC", "FQCC", "TOPN");System.out.println("原集合:"+list);list.sort(Comparator.comparingInt(o -> ProContant.getProContant(o).getIndex()));System.out.println("排序后的集合:"+list);}
}

运行结果:
原集合:[绿带, 合理化, 黑带, QCC, FQCC, TOPN]
排序后的集合:[QCC, FQCC, 合理化, TOPN, 黑带, 绿带]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/8959.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4、非线性数据结构

上一节课我们讲了线性数据结构&#xff0c;这一节我们说下非线性数据结构。 非线性数据结构&#xff0c;从字面意思来看&#xff0c;就是指不是线性的结构。线性结构的特点是只有一个前驱和一个后继。 那么非线性结构的特点就是有多个前驱或后继了。 如果只存在一个没有前驱的…

ChatGPT是什么?ChatGPT里的G、P、T分别指什么

前言 ChatGPT是一种基于人工智能技术的聊天机器人&#xff0c;它可以模拟人们的对话方式进行自然语言交流&#xff0c;并根据用户提出的问题、需求、意愿等信息提供相关服务或回答问题。 ChatGPT的G、P、T分别指“生成式”&#xff08;Generative&#xff09;、“预训练”&…

买卖股票的最佳时机系列

//方法一 class Solution { public:int dp[100005];int maxProfit(vector<int>& prices) {//dp[i]表示前i天买入卖出的获取的最大利润//min_val表示前i-1天买入的最小值&#xff1b;dp[0]0;int min_valprices[0];for(int i1;i<prices.size();i){dp[i]max(dp[i-1],…

HikariCP连接池

HikariCP连接池 HikariCP连接池是高性能的JDBC连接池&#xff0c;官网标注的三大特点&#xff1a;快速、简单、可靠&#xff0c;性能优于其他连接池。 官网详细地说明了HikariCP所做的一些优化&#xff0c;总结如下&#xff1a; 字节码精简&#xff1a;优化代码&#xff0c;直…

Jsonp劫持

JSONP 介绍 jsonp是一种协议&#xff0c;准确的说&#xff0c;他是json的一种使用模式&#xff0c;为了解决Json受同源策略限制的问题。 基本语法 JSONP的基本语法为&#xff1a;callback({“name”:”test”, “msg”:”success”}) 常见的例子包括函数调用&#xff08;如…

mac怎么转换音频格式?

mac怎么转换音频格式&#xff1f;相信很多小伙伴都知道&#xff0c;平时我们接触到的音频格式大多是mp3格式的&#xff0c;因为mp3是电脑上最为流行的音频格式&#xff0c;不过除了mp3格式外&#xff0c;还有很多不同的音频格式&#xff0c;有时候不同网上或者不同软件上下载到…

Java开发中的分层开发和整洁架构

分层开发(横向拆分) 分层开发的概念: maven多模块开发项目管理.可以利用这种管理功能,实现一个项目的多层次模块开发–分层开发. 比如,当前项目HelloController依赖HelloService 这样做目的: 复杂开发过程.解耦(不调整依赖关系,无法解耦).分层开发(横向拆分)和纵向拆分的区别…

麒麟v10-coredns 启动失败

现象 在麒麟ARM芯片的机器上搭建k8s&#xff0c;其中的的一个组件cordons 发现启动失败&#xff0c;查看日志如下所示&#xff1a;No such device or address 问题分析 期初猜测kubelet与containerd的cgroupDriver驱动不一致导致。分别查看是一致的。没有问题。发现系统存在…

科大讯飞语音合成Java springboot集成

科大讯飞语音合成 文本转语音 一、引入依赖&#xff1a; <dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId><version>5.5.0</version></dependency>二、下载响应的sdk&#xff0c;我这里是下载的…

docker查看log

显示所有 log # 显示某个容器的所有log $ docker logs [OPTIONS] <CONTAINER># 显示 docker-compose 启动的所有容器的log $ docker-compose logs显示实时 log 效果和Linux的 tail-f filename 一样&#xff0c;可以把最新内容刷新显示到屏幕上。 $ docker logs -f <C…

leetcode 1870. Minimum Speed to Arrive on Time(准时到达的最小速度)

需要找一个speed, 使得dist[i] / speed 加起来的时间 < hour, 而且如果前一个dist[i] / speed求出来的是小数&#xff0c;必须等到下一个整数时间才计算下一个。 speed最大不会超过107. 不存在speed满足条件时返回-1. 思路&#xff1a; 如果前一个dist[i] / speed求出来的…

MySQL必知必会 第28章 安全管理

数据库服务器通常包含关键的数据&#xff0c;确保这些数据的安全和完整性要利用访问控制。 28.1 访问控制 用户不能对过多的数据具有过多的访问权。 访问控制&#xff1a;需要给用户提高他们所需的访问权&#xff0c;且仅提供他们所需的访问权。管理访问控制需要创建和管理用…

vue-element-template管理模板(二)

vue-element-admin框架 动态路由&#xff08;二&#xff09; 修改代码&#xff1a; import { asyncRoutes, constantRoutes } from "/router"; import { getMenu } from "/api/user"; import Layout from "/layout";/*** Use meta.role to det…

基于ssm+mysql高校就业管理系统设计与实现

基于ssmmysql高校就业管理系统设计与实现 中文摘要 本论文主要讲述了基于SSM框架及MySQL数据库实现的就业管理系统的设计和开发过程。本论文中所讲的就业管理系统是通过所学的知识创办一个非商业性的网站平台&#xff0c;使所有想要就业信息查看的高校毕业生们与想要宣传自己…

C++第三方开发库matplotlib-cpp

Matplotlib-cpp是一个用于在C中绘制图表的开源库。它提供了与Python的Matplotlib库类似的功能&#xff0c;使得在C环境下进行数据可视化变得更加便捷。基于Matplotlib-cpp&#xff0c;我们可以使用各种绘图函数和样式选项来创建各种类型的图表&#xff0c;包括折线图、散点图、…

elementui全局给select option添加title属性

场景 有天边上的同事问了我一个问题&#xff0c;示例如下&#xff0c;有个数据特别长&#xff0c;导致下拉部分被横向撑大。希望在全局对所有的option进行处理&#xff0c;按照select的宽度&#xff0c;超出隐藏。 处理 方式一 第一眼看过去直接修改源码好了&#xff0c;修…

腾讯校园招聘技术类编程题汇总

题解&#xff1a;并查集&#xff08;模板&#xff09; #include <iostream> #include<map> using namespace std; int father[2000006]; int rank1[1000005]; void init(int n){for(int i1;i<1e5;i){father[i]i;rank1[i]1;} } int find(int x){if(father[x]x){…

Spring Boot中使用GraphQL

1. 简介 GraphQL是Facebook的一个相对较新的概念&#xff0c;被称为Web API的REST的替代品。 在本文中&#xff0c;我们将学习如何使用 Spring Boot 设置 GraphQL 服务器&#xff0c;以便我们可以将其添加到现有应用程序中或在新应用程序中使用它。 2. 什么是GraphQL&#x…

Centos7 扩容(LVM 和非 LVM)

一、磁盘扩容方式 CentOS 系统的磁盘扩容可以分为两种方式&#xff1a;LVM 管理和非 LVM 管理。 LVM 管理的分区和传统分区方式是可以共存的。在同一个系统中&#xff0c;你可以同时使用 LVM 管理的分区和传统分区。 例如&#xff0c;在 CentOS 系统中&#xff0c;你可以选择将…