首页 > 编程语言 >【Java】List排序方法(包括对象、Map等内部排序实现)

【Java】List排序方法(包括对象、Map等内部排序实现)

时间:2022-08-15 01:45:07浏览次数:90  
标签:sort Map Java name People age 鬼谷子 排序

前言



一、常规排序

/**
* String类型的集合排序
*/
void stringListTest() {
        List<String> list = Arrays.asList("王羲之", "张三丰", "vbe", "123", "李斯", "bf", "王淼", "鬼谷子", "415", "秦始皇");
    	list.sort(String::compareTo); 		  	// 正序
    	list.sort(Comparator.reverseOrder()); 	// 逆序
    	// Collections.sort(list);
    	// Collections.sort(list,Comparator.reverseOrder());
}
// 排序前:[王羲之, 张三丰, vbe, 123, 李斯, bf, 王淼, 鬼谷子, 415, 秦始皇]
// 正序后:[123, 415, bf, vbe, 张三丰, 李斯, 王淼, 王羲之, 秦始皇, 鬼谷子]
// 逆序后:[鬼谷子, 秦始皇, 王羲之, 王淼, 李斯, 张三丰, vbe, bf, 415, 123]

/**
* Integer类型的集合排序
*/
void integerListTest() {
        List<Integer> list = Arrays.asList(2, 4, 1, 54, 2);
        list.sort(Integer::compareTo);			// 正序
        list.sort(Comparator.reverseOrder());	// 逆序
}
// 排序前:[2, 4, 1, -3, 34, -123, 0, 54, 2]
// 正序后:[-123, -3, 0, 1, 2, 2, 4, 34, 54]
// 逆序后:[54, 34, 4, 2, 2, 1, 0, -3, -123]

二、内部属性排序

实体类
@Data
public class People {
    private String name;	// 姓名
    private Integer age;	// 年龄
}
对内部属性排序
// 创建peopleList数据进行测试
// 排序前:[People(name=鬼谷子, age=2), People(name=bf, age=26), People(name=鬼谷子, age=44), People(name=王淼, age=99)]
List<People> peopleList = new ArrayList<>();

// 对象单个属性正序排序
// [People(name=鬼谷子, age=2), People(name=bf, age=26), People(name=鬼谷子, age=44), People(name=王淼, age=99)]
peopleList.sort(Comparator.comparing(People::getAge));

// 对象多个属性正序排序
// [People(name=bf, age=26), People(name=王淼, age=99), People(name=鬼谷子, age=2), People(name=鬼谷子, age=44)]
peopleList.sort(Comparator.comparing(People::getName).thenComparing(People::getAge);

// 对象多个对象排序,并且要求年龄倒序(先对name正序,然后对age倒序)
// [People(name=bf, age=26), People(name=王淼, age=99), People(name=鬼谷子, age=44), People(name=鬼谷子, age=2)]
peopleList.sort(Comparator.comparing(People::getName).thenComparing(People::getAge, Comparator.reverseOrder()));

标签:sort,Map,Java,name,People,age,鬼谷子,排序
From: https://www.cnblogs.com/suhai/p/15577046.html

相关文章

  • javaweb Filter详解
    Filter详解1.快速入门packagecom.cj.filter;importjavax.servlet.*;importjavax.servlet.annotation.WebFilter;importjavax.servlet.annotation.WebServlet;i......
  • Day2(复习java基础知识)
    Java基础java是一门强类型语言要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用 Java的特性简单性面向对象可移植性高性能分布式动态......
  • 【Linux】Java获取Linux本机ip为127.0.0.1的解决方法
    前言参考博客:Java获取Linux本机ip为127.0.0.1的解决方法最近新部署了一台服务器,环境搭建好后,运行相应的项目代码时,发现项目获取的服务器IP地址不是我想要的Java代码中......
  • Java面向对象
    面向对象一、对象类=方法+属性面向过程:步骤清晰简单,第一步做什么,第二部做什么,适合处理一些较为简单的问题面向对象:分类的思维,思考问题需要哪些分类,对这些分类进行单独......
  • Java异常
    Java异常一、error和exception1、检查性异常用户错误或问题引起的异常,这是程序员无法预见的,在编译时不能简单忽略2、运行时异常可能被程序员避免的异常,可以再编译时被......
  • Java8新特性学习笔记
    java8JavaNIOjavaNIO(NewIO,Non-BolckingIO)是从java1.4版本引入的一套新的IOAPI,可以替代标准的javaioapi。nio支持面向缓冲区的(io是面向流的)、基于通道的IO操作......
  • JavaScript快速入门-01-环境搭建
    1环境搭建  搭建JavaScript开发环境有很多种组合,本文中采用VisualStudioCode和Node.js的组合,详细如下所示:1.1Node.js环境搭建1.1.1下载Node.js  不管是基......
  • Java方法详解
    Java方法详解一、方法system(类).out(对象).println();(方法)类+对象+方法方法包含于类或者对象中方法是实现某个功能的语句块的集合,一个方法只实现一个功能方法命名规则:首......
  • Java数组
    Java数组一、数组声明创建1、声明数组:数组元素类型数组名[]/[][]数组元素类型[]/[][]数组名为数组分配元素:数组名=new数组元素类型[数组元素个数]2、声明和创......
  • java实现大文件的拆分与合并
    前言我需要把一个大文件上传到网盘上,由于网盘禁止上传大于4G的文件,所以我想通过Java程序来把大文件分割为小文件后,再上传,等需要的时候,通过程序把文件进行合并即可。一、......