当前位置: 首页 > 面试题库 >

如何使用Java8 lambda反向排序流?

微生鸿轩
2023-03-14
问题内容

我正在使用Java lambda对列表进行排序。

如何以相反的方式对其进行排序?

我看到了这篇文章,但是我想使用java 8 lambda。

这是我的代码(我用* -1)作为破解

Arrays.asList(files).stream()
    .filter(file -> isNameLikeBaseLine(file, baseLineFile.getName()))
    .sorted(new Comparator<File>() {
        public int compare(File o1, File o2) {
            int answer;
            if (o1.lastModified() == o2.lastModified()) {
                answer = 0;
            } else if (o1.lastModified() > o2.lastModified()) {
                answer = 1;
            } else {
                answer = -1;
            }
            return -1 * answer;
        }
    })
    .skip(numOfNewestToLeave)
    .forEach(item -> item.delete());

问题答案:

您可以调整在Java中如何以降序对ArrayList 排序的方法中链接的解决方案通过将其包装在lambda中:

.sorted((f1, f2) -> Long.compare(f2.lastModified(), f1.lastModified())

请注意, f2 是的第一个参数Long.compare,而不是第二个,因此结果将相反。



 类似资料:
  • 我正在使用版本为(1.2.32)的SpringDocOpenAPI。现在,我想在UI中按HTTP方法(反向顺序)对endpoint进行排序,并且我没有在endpoint方法上使用任何标记。 如果我有4个endpoint发布,获取,放置,删除,然后我想显示方法放置,发布,获取,删除 我尝试了以下方法,但似乎不起作用: springdoc.swagger-ui.operations排序器=(方法和al

  • 问题内容: 我有直接列表List1。 如何更改订单。而且我不知道如何从扩展类重写方法,请编写示例或说清楚。 问题答案: 用这个:

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

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

  • 我只是想看看我是否理解教授和在线资源所说的话。 对于heapSort算法,第一个元素的索引从0开始。 对于最大堆,如果子堆大于父堆,则percolate down应将最大子堆与其父堆交换,例如(这是用于赋值,因此我尝试发布尽可能少的代码): 所以最后,最大元素应该在索引0处。 如果这是正确的,我不理解的是heapSort实现: 最大堆中的渗滤层不应该将最大的元素放在索引0处吗?在这种情况下,为什么

  • 似乎Lodash的sortedIndex期望一个前向排序数组来进行二进制搜索。(例如)