Java List中通过对象属性排序,可实现多条件排序

这篇具有很好参考价值的文章主要介绍了Java List中通过对象属性排序,可实现多条件排序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

直接上代码:

import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import lombok.Data;

import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

/**
 * List 对象属性排序
 */

@Data
@AllArgsConstructor
class Commodity
{
    private String name;
    private Double price;
    private Integer count;
}

public class Test {
    public static void main(String[] args) {
        // 创建参数
        List<Commodity> list = Lists.newArrayList(
                new Commodity("1", 3.3, 10),
                new Commodity("2", null, 30),
                new Commodity("3", 4.4, 20),
                new Commodity("4", 6.6, null),
                new Commodity("5", 8.8, 20),
                new Commodity("6", 8.8, 20),
                new Commodity("7", 7.7, 60),
                new Commodity("8", 7.7, 60)
        );

        // 多排序条件
        List<Commodity> orderShopList = list.stream().sorted(Comparator
                // 先按数量降序(由于是降序,nullsFirst()方法会将null值放在后面)
                .comparing(Commodity::getCount, Comparator.nullsFirst(Integer::compareTo).reversed())
                // 然后按价格升序(由于是升序,nullsFirst()方法会将null值放在前面)
                .thenComparing(Commodity::getPrice, Comparator.nullsFirst(Double::compareTo))
                // 然后按名称降序(如果不设置null值排序规则,字段为null会报错)
                .thenComparing(Commodity::getName, Comparator.reverseOrder())
        ).collect(Collectors.toList());

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

 运行结果如下:

Java List中通过对象属性排序,可实现多条件排序,java,开发语言文章来源地址https://www.toymoban.com/news/detail-593594.html

到了这里,关于Java List中通过对象属性排序,可实现多条件排序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Java List 按指定条件排序的几种方式

      在 Java 项目中,可能会遇到给出一些条件,将 List 元素按照给定条件进行排序的情况。如下述场景。 一、排序场景   List 保存着一组乱序排列的字符串,Map 中保存着该组字符串各自的优先级。优先级数字从低到高表示优先级依次递减。要求将 List 中的字符串,按照优

    2024年02月13日
    浏览(67)
  • 【Java基础】Java8 使用 stream().filter()过滤List对象(查找符合条件的对象集合)

    本篇主要说明在Java8及以上版本中,使用stream().filter()来过滤List对象,查找符合条件的集合。 集合对象以学生类(Student)为例,有学生的基本信息,包括:姓名,性别,年龄,身高,生日几项。 我的学生类代码如下: 下面来添加一些测试用的数据,代码如下: 添加过滤条件

    2024年02月12日
    浏览(68)
  • java List<对象> 根据对象的一个属性进行去重

    1.实现一个自定义函数,该函数将用于确定两个对象是否相等,例如: 这个函数接受一个Function对象作为参数,该函数将从对象中提取唯一标识属性,并使用ConcurrentHashMap来确定是否已经处理过该属性值。   2.现在你可以使用这个函数来进行去重了,例如:  这个代码将对m

    2024年02月12日
    浏览(56)
  • java 对象List中对象的某一属性重新赋值

    描述: 在我们开发过程中经常会遇到在拿到一个对象list集合的时候回对某一个字段重新赋值,比如:在无任务下面的若干子任务,开始执行主任务对子任务的状态统一设置待执行。这个时候就需要使用 Java8 stream 或者 List forEach 这两种方式来实现,方便快捷,也不需要再遍历

    2024年02月12日
    浏览(57)
  • Java多条件排序使用Comparator和thenComparing【包含排序List<Map<String, String>>】

    在Java中,对一个列表或集合进行排序时,经常需要基于多个条件来排序。幸运的是,Java提供了强大的 Comparator 接口,以及 thenComparing 方法,使我们能够轻松地实现多条件排序。 Comparator 接口是Java用于自定义对象排序的关键接口。它包含了一个 compare 方法,允许我们定义如何

    2024年02月04日
    浏览(50)
  • 使用Lambda获取List对象中某一个属性以及获取特定条件下的属性对象

    使用Lambda表达式需要jdk1.8以上的环境 如下所示

    2024年02月15日
    浏览(50)
  • java8 List根据元素对象属性去重

    1.使用Collectors.collectingAndThen链式去重 代码: main: 结果: 或者可以利用map也可以: 或: 或者不用链式也可以分开: Collectors.collectingAndThen()  函数应该最像  map and reduce  了, 它可接受两个参数,第一个参数用于  reduce 操作,而第二参数用于  map 操作 。 也就是, 先把流中

    2024年02月12日
    浏览(69)
  • Java当中List集合根据对象某个属性进行去重

    关于以下方法,直接可以在自己项目创建一个类,然后进行测试使用,去重方式有很多种,文本末尾也提供了每个方法的运行结果,供大家参考使用! 文章大量使用到了Java8当中的Lambda表达式,以及stream流相关基础知识。如果您用的不熟,没关系,可以直接复制下面的方案然

    2024年02月16日
    浏览(64)
  • JAVA 使用stream流将List中的对象某一属性创建新的List

    Java Stream是Java 8引入的一种新机制,它可以让我们以声明式方式操作集合数据,提供了更加简洁、优雅的集合处理方式。Stream是一个来自数据源的元素队列,并支持聚合操作。它的特点有: Stream 不会修改原始数据源。 Stream 操作是延迟执行的。 Stream 操作可以是无限的(比如

    2024年02月03日
    浏览(59)
  • Java中List对象集合按照对象中某字段进行排序

    在Java中,可以使用List集合对象的sort(Comparator? super E c)方法,按照对象中某字段对List集合进行排序 栗子: 打印输出结果如下:

    2024年02月12日
    浏览(56)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包