当前位置: 首页 > news >正文

Java List sort() 排序

sortjava.util.List接口的默认方法。

List的排序方法在Java 8中被引入。

排序方法接受比较器作为参数,并根据指定的比较器对这个列表进行排序。

 default void sort(Comparator<? super E> c)

示例代码:

import java.text.Collator;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;public class ListSort {private static Student zs = new Student("张三", 38, "156****6549");private static Student ls = new Student("李四", 28, "138****4267");private static Student ww = new Student("王五", 20, "186****7391");private static Student zs2 = new Student("张三", 26, "172****6549");private static Student ww2 = new Student("王五", null, "196****7391");public static void main(String[] args) {List<Student> studentList = Arrays.asList(zs, ls, ww, zs2, ww2);Collator collator = Collator.getInstance(Locale.CHINA);// 按照姓名排序Comparator<Student> nameComparator = Comparator.comparing(Student::getName, collator);// 正序studentList.sort(nameComparator);// 倒序studentList.sort(nameComparator.reversed());System.out.println("************姓名****************");studentList.forEach(System.out::println);// 年龄排序(空值最前)studentList.sort(Comparator.comparing(Student::getAge, Comparator.nullsFirst(Integer::compareTo)));System.out.println("************年龄****************");studentList.forEach(System.out::println);// 手机号前三位排序studentList.sort(Comparator.comparing(student -> student.getPhoneNum().substring(0, 3)));System.out.println("************手机号****************");studentList.forEach(System.out::println);// 多字段排序(按姓名,再按年龄)studentList.sort(Comparator.comparing(Student::getName, collator).thenComparing(Student::getAge, Comparator.nullsLast(Comparator.naturalOrder())));System.out.println("************多字段****************");studentList.forEach(System.out::println);}public static class Student {/*** 姓名*/private String name;/*** 年龄*/private Integer age;/*** 手机号*/private String phoneNum;public Student(String name, Integer age, String phoneNum) {this.name = name;this.age = age;this.phoneNum = phoneNum;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getPhoneNum() {return phoneNum;}public void setPhoneNum(String phoneNum) {this.phoneNum = phoneNum;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +", phoneNum='" + phoneNum + '\'' +'}';}}}

排序结果:

************姓名****************
Student{name='张三', age=38, phoneNum='156****6549'}
Student{name='张三', age=26, phoneNum='172****6549'}
Student{name='王五', age=20, phoneNum='186****7391'}
Student{name='王五', age=null, phoneNum='196****7391'}
Student{name='李四', age=28, phoneNum='138****4267'}
************年龄****************
Student{name='王五', age=null, phoneNum='196****7391'}
Student{name='王五', age=20, phoneNum='186****7391'}
Student{name='张三', age=26, phoneNum='172****6549'}
Student{name='李四', age=28, phoneNum='138****4267'}
Student{name='张三', age=38, phoneNum='156****6549'}
************手机号****************
Student{name='李四', age=28, phoneNum='138****4267'}
Student{name='张三', age=38, phoneNum='156****6549'}
Student{name='张三', age=26, phoneNum='172****6549'}
Student{name='王五', age=20, phoneNum='186****7391'}
Student{name='王五', age=null, phoneNum='196****7391'}
************多字段****************
Student{name='李四', age=28, phoneNum='138****4267'}
Student{name='王五', age=20, phoneNum='186****7391'}
Student{name='王五', age=null, phoneNum='196****7391'}
Student{name='张三', age=26, phoneNum='172****6549'}
Student{name='张三', age=38, phoneNum='156****6549'}

http://www.lryc.cn/news/446307.html

相关文章:

  • Vue.js 与 Flask 或 Django 后端配合
  • 抽奖拼团卷轴模式系统开发小程序源代码解析
  • MySql语言操作数据库---增删改查数据库,表,数据
  • C++深入学习string类成员函数(2):容器管理
  • MariaDB 和 MySQL 全面对比:选择数据库需要考虑这几点
  • Python 实现图形学几何变换算法
  • 接口测试|超详细面试题【附答案】
  • Qt网络编程——QTcpServer和QTcpSocket
  • CentOS 7 aarch64制作openssh 9.9p1 rpm包 —— 筑梦之路
  • Flink和Spark的区别
  • 以太网开发基础-MAC和PHY
  • Java 发布jar包到maven中央仓库(2024年9月保姆级教程)
  • Pandas和Seaborn可视化详解
  • 【Python】Windows下安装使用FFmpeg
  • LLM - 使用 XTuner 指令微调 多模态大语言模型(InternVL2) 教程
  • 【Python】数据可视化之热力图
  • 个人博客系统测试(selenium)
  • 【速成Redis】01 Redis简介及windows上如何安装redis
  • 入侵检测系统(IDS)和入侵预防系统(IPS)
  • pytorch 加载模型参数后 如何测试数据,应用模型预测数据,然后连续变量转换成 list 或者numpy.array padans并保存到csv文件中
  • uni-app开发流程(开发、预览、构建和发布过程)
  • Linux Shell: 使用 Expect 自动化 SCP 和 SSH 连接的 Shell 脚本详解
  • 深入分析MySQL事务日志-Undo Log日志
  • 828华为云征文 | 在Huawei Cloud EulerOS系统中安装Docker的详细步骤与常见问题解决
  • 什么是数据增强中的插值法?
  • springboot实战学习(9)(配置mybatis“驼峰命名“和“下划线命名“自动转换)(postman接口测试统一添加请求头)(获取用户详细信息接口)
  • 之前做了抵押贷款,现在房市不景气,马上贷款要到期了该怎么办?
  • poi生成的ppt,powerPoint打开提示内容错误解决方案
  • 基于stm32物联网身体健康检测系统
  • BeautifulSoup4在爬虫中的使用