加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java流按2个字段排序

发布时间:2020-12-15 08:26:13 所属栏目:Java 来源:网络整理
导读:我有需要按2个参数排序的项目列表,第一个参数是orderIndex,我有那个部分正常工作(参见下面的代码),orderIndex之后的第二个参数是金额.因此,基本上第一项应该是订单索引最低的项目,并且需要按金额进行排序. result.stream().sorted { s1,s2 - s1.intervalType
我有需要按2个参数排序的项目列表,第一个参数是orderIndex,我有那个部分正常工作(参见下面的代码),orderIndex之后的第二个参数是金额.因此,基本上第一项应该是订单索引最低的项目,并且需要按金额进行排序.

result.stream().sorted { s1,s2 -> s1.intervalType.orderIndex.compareTo(s2.intervalType.orderIndex) }.collect(Collectors.toList())

此时我有那个代码,它只是按orderIndex排序,第二个参数金额位于s1.item.amount.

知道如何使用第二个排序参数升级此代码吗?

我找到了这个例子

persons.stream().sorted(Comparator.comparing(Person::getName).thenComparing(Person::getAge));

我的问题是,如何访问Person中的其他对象,例如在我的情况下,我在对象中有IntervalType对象,我正在排序,我需要使用intervalType.orderIndex

注意:

只是为了注意我需要在Kotlin而不是Java中.

解决方法

您可以使用Comparator使用流对数据进行排序

//first comparison
Comparator<YourType> comparator = Comparator.comparing(s -> s.intervalType.orderIndex);

//second comparison
comparator = comparator.thenComparing(Comparator.comparing(s-> s.item.amount));

//sorting using stream
result.stream().sorted(comparator).collect(Collectors.toList())

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读