gpt4 book ai didi

Java流排序2个变量升序/降序

转载 作者:太空狗 更新时间:2023-10-29 22:43:10 26 4
gpt4 key购买 nike

我想对 seq1 升序排序,seq2 降序排序,所以我这样做:

list = list.stream().sorted(comparing(AClass::getSeq1).thenComparing(        
AClass::getSeq2).reversed()).collect(toList());

但是结果出来了,因为seq1和seq2都是降序排列的。

我可以这样做来使 seq1 升序和 seq2 降序:

sorted(comparing(AClass::getSeq1)
.reversed().thenComparing(AClass::getSeq2).reversed()

真正正确的方法是什么?

最佳答案

在您的第一个示例中,reversed 应用于整个比较器,该比较器按升序比较 seq1 和 seq2。

你只需要反转第二个比较,这可以完成,例如:

import static java.util.Collections.reverseOrder;
import static java.util.Comparator.comparing;

list = list.stream().sorted(
comparing(AClass::getSeq1)
.thenComparing(reverseOrder(comparing(AClass::getSeq2))))
.collect(toList());


//or you could also write:

list = list.stream().sorted(
comparing(AClass::getSeq1)
.thenComparing(comparing(AClass::getSeq2).reversed()))
.collect(toList());

关于Java流排序2个变量升序/降序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30382453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com