首页 > 其他分享 >Sort排序

Sort排序

时间:2024-08-27 18:15:54浏览次数:11  
标签:Sort null Comparator stream list comparing sorted 排序

场景一:普通排序
正序(升序)
list = list.stream().sorted().collect(Collectors.toList());
list = list.stream().sorted(Comparator.comparing(Student::getAge))
倒序(降序)
list = list.stream().sorted(Comparator.reverseOrder())
list = list.stream().sorted(Comparator.comparing(Student::getAge).reversed())

场景二:含空值排序
含空值的正序(升序)排序(按创建时间排序)
list = list.stream().sorted(Comparator.comparing(stu -> stu.getCreateTime(), Comparator.nullsFirst(Date::compareTo))).collect(Collectors.toList());

场景三:不用Stream
// 正序
list = list.sort(Comparator.comparing(Integer::intValue));
list = list.sort(Comparator.comparing(Student::getAge));
// 倒序
list = list.sort(Comparator.comparing(Integer::intValue).reversed());
list = list.sort(Comparator.comparing(Student::getAge).reversed());

List<String> list = Arrays.asList("banana", null, "apple", "cherry", null, "date");

// 使用nullsFirst,将null值排在非null值前面
    List<String> sortedListNullsFirst = list.stream()
            .sorted(Comparator.nullsFirst(Comparator.naturalOrder()))
            .collect(Collectors.toList());

// 使用nullsLast,将null值排在非null值后面
    List<String> sortedListNullsLast = list.stream()
            .sorted(Comparator.nullsLast(Comparator.naturalOrder()))
            .collect(Collectors.toList());

// 打印排序结果
    sortedListNullsFirst.forEach(System.out::println);
    sortedListNullsLast.forEach(System.out::println);

`
参考:
https://www.w3cschool.cn/java/codetag-stream-stream_sort.html

标签:Sort,null,Comparator,stream,list,comparing,sorted,排序
From: https://www.cnblogs.com/java123456/p/18383275

相关文章

  • python冒泡排序
    1、什么是冒泡排序  BubbleSort是最简单和通用的排序方法,基本思想是:在待排序的一组数据中,将相邻的两个数进行比较,若前面的数比后面的数大,就交换两个数,否则不交换;如此下去,直至完成最终排序。由此可得,在排序的过程中,大的数据往下沉,小的数据往上浮,就像气泡一样。于是将这种算......
  • 【数据结构】二叉树的顺序结构,详细介绍堆以及堆的实现,堆排序
    目录1.二叉树的顺序结构2.堆的概念及结构3.堆的实现3.1堆的结构3.2堆的初始化3.3堆的插入 3.4堆的删除3.5获取堆顶数据3.6堆的判空3.7堆的数据个数3.8堆的销毁4.堆的应用4.1堆排序4.1.1向下调整建堆的时间复杂度 4.1.2向上调整建堆的时间复杂......
  • 排序算法
    冒泡排序冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。......
  • 堆排序算法及优化(java)
    目录1.1引言1.2堆排序的历史1.3堆排序的基本原理1.3.1堆的概念1.3.2堆排序的过程1.3.3堆调整1.3.4堆排序算法流程1.4堆排序的Java实现1.4.1简单实现1.4.2代码解释1.4.3优化实现1.4.4代码解释1.5堆排序的时间复杂度1.5.1分析1.5.2证明1.6堆排序......
  • 大根堆排序
    原理假设待排序目标为数组arr,可将其视为一个完全二叉树。在大根堆排序中,根节点为最大值,我们循环将根取出,并减少大根堆的长度和调整堆使之堆维持大根堆,直至取出堆中全部节点数据。因为我们每次都是取出大根堆的最大值,故取出数据便有序了。完全二叉树父节点和叶子节点的索引关......
  • 排序------快速排序(C语言实现)
    目录快速排序算法例题题目描述具体代码:代码分析函数定义:主函数:快速排序算法快速排序(QuickSort)是一种高效的排序算法,它采用分治策略,通过选择一个“基准”元素并将其他元素重新排列为两部分,一部分小于基准,另一部分大于基准,然后递归地对这两部分进行排序。快速排......
  • 函数qsort的使用与冒泡排序模拟实现qsort
    目录一.qsort函数的使用示例二.使用冒泡排序模拟实现qsort函数二.1.冒泡排序 二.2.模拟实现qsort函数一.qsort函数的使用1.1.qsort函数是用来排序任意数据类型的数组,对其中的元素进行一定规则的排列2.qsort不返回任何值3.qsort的第一个参数是一个void*指针,指向......
  • 题解:SP1182 SORTBIT - Sorted bit squence
    题意将区间\([m,n]\)的所有整数按照其二进制位表示的数中\(1\)的数量从小到大排序。如果\(1\)的数量相同,则按照数的大小排序。求序列中第\(k\)个数。其中,负数使用补码来表示:一个负数的二进制数与其相反数的二进制数之和恰好等于\(2^{32}\)。分析考虑用uint32_t存......
  • C++编程-数据排序2
    关于以后的更新已经8月25号了,即将接近CSP-J/S,因此,在数据排序算法更新完后,我们会重点更新CSP的试卷以及知识点,希望大家在考试中旗开得胜!回顾数据排序1在数据排序1中,我们讲解了选择、冒泡、插入、桶、快速排序,并留下了2道题目,今天就来解答这两道题目一:冒泡排序#include<st......
  • 经典算法:快速排序
    快速排序快速排序是对[[冒泡排序]]的优化,使用了分治的思想。步骤选择基准元素(Pivot):从数组中选择一个元素作为基准。常见的选择方法有:选择第一个元素选择最后一个元素选择中间的元素随机选择一个元素三数取中法(选择第一个、最后一个和中间值的中间值)划分操作(Partition......