当前位置: 首页 > 知识库问答 >
问题:

Java8 lambda:对流进行反向排序?

须志新
2023-03-14

我有这个列表,我想按保留顺序订购,但我没有在自动完成辅助中找到任何。逆转()函数

 myMenus(user)
                .stream()
                .filter(mps ->  mps.get1PercentageChange() > 0 &&
                                mps.get2PercentageChange() > 0 &&
                                mps.get3PercentageChange() > 0 &
                                mps.get4PercentageChange() > 0)
                .sorted(comparing(mps -> mps.getDailyPercentageChange()))
                .collect(toList());

我也尝试过:

myMenus(user)
        .stream()
        .filter(mps ->  mps.get1PercentageChange() > 0 &&
                        mps.get2PercentageChange() > 0 &&
                        mps.get3PercentageChange() > 0 &
                        mps.get4PercentageChange() > 0)
        .sorted(comparing(mps -> mps.getDailyPercentageChange()).reversed())
        .collect(toList());

但是我有编译错误:

Cannot infer type argument(s) for <T, U> comparing(Function<? super T,? 
     extends U>)

共有2个答案

赵夕
2023-03-14

比较器有一个反向的方法来获得反向排序,所以:

.sorted(comparing(mps -> mps.getDailyPercentageChange()).reversed())

应该有用。

茹高义
2023-03-14

这是一个类型推断问题。你需要帮助编译器。

你可以尝试的几件事:

.sorted(comparing(T::getDailyPercentageChange).reversed())

或者

.sorted(comparing((T mps) -> mps.getDailyPercentageChange()).reversed())

其中,T是被比较的元素类型。

 类似资料:
  • 我想像下面这样对流进行反向排序,但是编译时错误为。有人能纠正这个吗

  • 所以我遇到了这个方法,它能够按值对HashMaps进行排序。 我想在比较器上使用方法,但是我似乎找不到合适的地方放它。

  • 我正在使用java lambda对列表进行排序。 我怎样才能反向排序呢?

  • 问题内容: 我使用以下行以相反的顺序对浮点数组进行排序,但出现错误消息,这是什么问题? 错误:找不到符号 符号:方法sort(float [],java.util.Comparator)位置:类java.util.Arrays Arrays.sort(sortedData,Collections.reverseOrder()); ==================================

  • 问题内容: 我正在尝试对Go中的整数切片进行反向排序。 如何对它进行排序,使其从最高到最低?所以[25 5 4 3 1] 我已经试过了 资料来源:http : //golang.org/pkg/sort/#Reverse 但是,我得到下面的错误 问题答案: sort.Ints是对几个int进行排序的便捷函数。通常,如果要对某些内容进行排序和排序,则需要实现sort.Interface接口.Reve

  • 我有一个数据库表,我想对其进行筛选,然后按相反(降序)顺序进行排序。我如何在类似于以下内容的速度流中表达: 我希望我的SQL查询能够通过速度优化,因此我不能使用匿名lambda。