Java Stream流排序并判空

这篇具有很好参考价值的文章主要介绍了Java Stream流排序并判空。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 问题:直接排序的话会出现NullPointerException所以需要排空
  • 解决:使用nullsFirst()或者/nullsLast()
  • 方法介绍
    • nullsFirst():此方法返回比较器,其是空型比较,并认为空值小于非空。null首先通过以下逻辑进行操作:
    • 1.null元素被认为小于non-null(即值是null的小于非空的)。
      2.当两个元素都为空时,则认为它们相等。
      3.当两个元素都不为空时,指定的Comparator确定顺序。
      4.如果指定的比较器为null,则返回的比较器将所有非null元素视为相等。
      5.如果指定的比较器可序列化,则返回的比较器可序列化。
    • nullsLast():方法返回比较器,其是空型比较,并认为比非空更大空值。null首先通过以下逻辑进行操作:
    • 1.null元素被认为大于非null。
      2.当两个元素都为空时,则认为它们相等。
      3.当两个元素都不为空时,指定的Comparator确定顺序。
      4.如果指定的比较器为null,则返回的比较器将所有非null元素视为相等。
      5.如果指定的比较器可序列化,则返回的比较器可序列化。
    • 示例:
    • List<Student> list = v.stream().distinct()
      .sorted(Comparator.comparing(Student::getAge, Comparator.nullsLast(String::compareTo)).reversed()
      .thenComparing(Student::getNo, Comparator.reverseOrder()))
      .collect(Collectors.toList());
    • 补充说明

        1.sorted():自然排序

list = list.stream().sorted().collect(Collectors.toList());

        2.定制排序(根据某个字段排序)

list = list.stream().sorted(Comparator.comparing(Student::getAge))
.collect(Collectors.toList());

        3.降序

list = list.stream().sorted(Comparator.comparing(Student::getAge).reversed())
.collect(Collectors.toList());

        4.多字段排序文章来源地址https://www.toymoban.com/news/detail-834314.html

list=list.sorted(Comparator.comparing(Student::getName).thenComparing(Student::getAge))
.collect(Collectors.toList());

到了这里,关于Java Stream流排序并判空的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java8的stream之groupingBy()分组排序

    groupingBy()是Stream API中最强大的收集器Collector之一,提供与SQL的GROUP BY子句类似的功能。 需要指定一个属性才能使用,通过该属性执行分组。我们通过提供功能接口的实现来实现这一点 - 通常通过传递lambda表达式。 TreeMap默认按照key升序排序,collectPlan.descendingMap()可以进行降序排

    2024年02月12日
    浏览(39)
  • Java8-使用stream.sorted()对List排序

    1.流的定义 Stream 中文称为 “流”,通过将集合转换为这么一种叫做 “流” 的元素序列,通过声明性方式,能够对集合中的每个元素进行一系列并行或串行的操作! 如果流中的元素的类实现了 Comparable 接口,即有自己的排序规则,那么可以直接调用 sorted() 方法对元素进行排

    2024年02月16日
    浏览(57)
  • 使用Java的stream().sorted方法对集合进行排序

    Java Stream API 提供了丰富的方法来对流中的元素进行处理和操作。其中, sorted() 方法用于对流中的元素进行排序。本文将深入探讨 sorted() 方法的用法、示例代码以及详细解释,以帮助您更好地理解和使用这个方法。 StreamT sorted() : 这个方法用于对流中的元素进行自然排序。要

    2024年02月04日
    浏览(57)
  • 利用java语言中的stream流操作判断一个数组中是否有重复元素

    判断数组中是否有重复元素可以说是每一个编程语言初学者都会遇到的题目,常见的各种搜索算法本文不做赘述了,我们这次介绍的是利用java语言中特有的stream流操作来判断通用类型数组是否包含重复元素。 首先我们声明一个泛型方法: 表明该方法适用于所有类型的数组。

    2024年02月12日
    浏览(50)
  • java用stream根据实体的某个属性对列表进行排序

    用stream流根据实体的某个属性对列表进行排序 假设有一个实体类 Person,包含两个属性 name 和 age,你可以使用 stream 流的 sorted() 方法来按照某两个字段进行排序。以下是一个示例代码: 在上述代码中,我们将 personList 转换成流后,调用了 sorted() 方法,并且使用 Comparator 的

    2024年02月06日
    浏览(56)
  • Java8 Stream流List<JSONObject>通过某一属性进行排序

    List对象 1.首先你需要list.parallelStream().sorted 进行流处理,使用parallelStream可以充分调度多核CPU。 2.使用Comparator.comparing进行排序,reversed()进行倒序排列,thenComparing进行下一个排序。 3.Comparator.comparing()里面的内容,也是就是Object::getter,例如Test::getName 4.最后格式化为需要的格式

    2024年02月12日
    浏览(62)
  • Java8用Stream流一行代码实现数据分组统计,排序,最大值、最小值、平均值、总数、合计

    Java8对数据处理可谓十分流畅,既不改变数据,又能对数据进行很好的处理,今天给大家演示下,用Java8的Stream如何对数据进行分组统计,排序,求和等 汇总统计方法 找到汇总统计的方法。这些方法属于java 8的汇总统计类。 getAverage(): 它返回所有接受值的平均值。 getCount():

    2023年04月20日
    浏览(66)
  • 使用java8 新特性stream流对List<Map<String, Object>>集合进行遍历、过滤、查询、去重、排序、分组

    对于一个ListMapString, Object类型的数据,可以使用Java 8的新特性stream流来进行遍历、过滤、查询、去重、排序、分组等操作。 遍历: 过滤: 查询: 去重: 排序: 分组:

    2024年02月10日
    浏览(69)
  • 【Stream流】java中Stream流详细使用方法

    在Java中, Stream 是一种用于处理集合数据的流式操作API。它提供了一种简洁、灵活、高效的方式来对集合进行各种操作,如过滤、映射、排序等。下面是一些 Stream 的常用功能和详细的代码示例: 创建流: 从集合创建流: stream() 方法可以从集合创建一个流。 从数组创建流:

    2024年02月07日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包