首页 > 其他分享 >List排序

List排序

时间:2023-09-12 10:00:42浏览次数:32  
标签:List list Person add new 排序

1、使用匿名比较器排序

// 创建并初始化 List
List<Person> list = new ArrayList<Person>() {{
    add(new Person(1, 30, "北京"));
    add(new Person(2, 20, "西安"));
    add(new Person(3, 40, "上海"));
}};
// 使用匿名比较器排序
Collections.sort(list, new Comparator<Person>() {
    @Override
    public int compare(Person p1, Person p2) {
        return p2.getAge() - p1.getAge();
    }
});
// 打印 list 集合
list.forEach(p -> {
    System.out.println(p);
});
Person(id=3, age=40, name=上海)
Person(id=1, age=30, name=北京)
Person(id=2, age=20, name=西安)

2、使用 Stream 流排序

在 JDK 8 之后可以使用更加简单的方法 Stream 流来实现排序功能

// 创建并初始化 List
List<Person> list = new ArrayList<Person>() {{
    add(new Person(1, 30, "北京"));
    add(new Person(2, 20, "西安"));
    add(new Person(3, 40, "上海"));
}};
// 使用 Stream 排序
// 其中 reversed() 表示倒序的意思,如果不使用此方法则是正序。
list = list.stream().sorted(Comparator.comparing(Person::getAge).reversed()).collect(Collectors.toList());
// 打印 list 集合
list.forEach(p -> {
    System.out.println(p);
});
Person(id=3, age=40, name=上海)
Person(id=1, age=30, name=北京)
Person(id=2, age=20, name=西安)

扩展:排序字段为 null

使用 Stream 进行排序时,如果排序的字段出现 null 值就会导致异常发生

// 创建并初始化 List
List<Person> list = new ArrayList<Person>() {{
    add(new Person(30, "北京"));
    add(new Person(10, "西安"));
    add(new Person(40, "上海"));
    add(new Person(null, "上海"));
}};
// 按照[年龄]正序,但年龄中有一个 null 值
// Comparator.nullsFirst 表示将排序字段中的 null 值放到集合最前面,如果想要将 null 值放到集合最后面可以使用 Comparator.nullsLast。
list = list.stream().sorted(Comparator.comparing(Person::getAge,Comparator.nullsFirst(Integer::compareTo)))
    .collect(Collectors.toList());
// 打印 list 集合
list.forEach(p -> {
    System.out.println(p);
});

标签:List,list,Person,add,new,排序
From: https://www.cnblogs.com/yqcg/p/17695210.html

相关文章

  • 快速排序
    快速排序快速排序的基本思路是,通过partition操作,将数字划分为小于等于部分和大于部分,对于这个两个部分,再次分别进行partition,直到不能再分在快速排序中,最核心的部分就是partition,在这里记录一下我理解partition的过程,partition有多种方法,我使用的是快慢指针的方法。defpartit......
  • 拓扑排序
           ......
  • 二叉排序树
          ......
  • Python中list是什么意思?如何创建使用?
    list代表列表,它是Python中的一种数据类型,与其他编程语言的数组有相似的特点,但是它有着更为强大的功能,接下来我们一起来看看具体的内容介绍。Python中的list是列表,是一种数据类型。序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字-它的位置,或索引,第一......
  • ToDoList-L
                                                 ......
  • 深入了解选择排序算法
    在计算机科学中,排序是一个基本而重要的问题。排序算法有许多种,其中之一是选择排序(SelectionSort)。本文将深入介绍选择排序的工作原理,讨论其时间复杂度,以及提供Python、Go、Java和C语言的示例代码。选择排序的基本思想选择排序是一种比较排序算法,其基本思想是将数组分为已排序和未......
  • MySQL基础篇:掌握MySQL数据排序,让你的数据分析事半功倍
    单一字段排序排序采用orderby子句,orderby后面跟上排序字段,排序字段可以放多个,多个采用逗号间隔,orderby默认采用升序,如果存在where子句那么orderby必须放到where语句的后面按照薪水由小到大排序(系统默认由小到大)mysql>select*fromEMPorderbySAL;+-------+--------+---......
  • 并查集 堆排序 (9/10)
    并查集模板 注意查找到后查找的节点直接连接根节点#include<iostream>usingnamespacestd;constintN=100010;intp[N];//关键记住find函数intfind(inta){if(p[a]!=a)p[a]=find(p[a]);//不等于根节点就往头结点走,并且等于returnp[a];}intma......
  • 【Python基础】list(列表)
    list作为Python中最常用的数据结构之一,与其他编程语言的数组有相似的特点,但是它具有着更为强大的功能,接下来将详细地为大家介绍一下list的所有操作。(注:tuple元组类型与list类似,但是tuple的元素不能修改;set集合与list也类似,但是集合中的元素是无序的,且会自动除去重复元素)1.list......
  • 5 排序算法总结
    5排序算法总结首先总结表如下:排序方法平均时间复杂度最好情况最坏情况空间复杂度是否稳定排序方式冒泡排序\(O(n^2)\)\(O(n)\)\(O(n^2)\)\(O(1)\)稳定内部排序选择排序\(O(n^2)\)\(O(n^2)\)\(O(n^2)\)\(O(1)\)不稳定内部排序插入排序\(O(n^2)......