如何使用 Speedment 以相反的顺序对流进行排序 [重复]

Posted

技术标签:

【中文标题】如何使用 Speedment 以相反的顺序对流进行排序 [重复]【英文标题】:How do I sort a Stream in reversed order with Speedment [duplicate] 【发布时间】:2017-10-04 06:03:34 【问题描述】:

我有一个要过滤的数据库表,然后按反向(降序)顺序排序。我如何在与此类似的 Speedment 流中表达这一点:

films.stream()
    .filter(Film.LENGTH.greaterThan(120))
    .sorted(... some expression ...)
    .skip(100)
    .limit(50)
    .collect(Collectors.toList());

我希望我的 SQL 查询由 Speedment 优化,因此我不能使用匿名 lambda。

【问题讨论】:

与一般匿名 lambda Comparator::reversed 相比,使用内置比较器很重要,否则 Speedment 将无法在后台呈现完全优化的 SQL 查询。 如果你在我标记后更改问题,你不能抱怨标记...... 【参考方案1】:

为您要使用的字段使用内置比较器并应用Comparator::reversed 操作,如下所示:

films.stream()
    .filter(Film.LENGTH.greaterThan(120))
    .sorted(Film.LENGTH.comparator().reversed())  // <--- Here
    .skip(100)
    .limit(50)
    .collect(Collectors.toList());

【讨论】:

以上是关于如何使用 Speedment 以相反的顺序对流进行排序 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java:如何以相反的顺序对浮点数组进行排序?

使用Speedment实现事务处理

如何以相反的顺序快速迭代for循环?

可以以相反的顺序为java中的每个循环做一个吗?

使用 range() 以相反的顺序打印列表?

如何以相反的顺序将文档从一个集合添加到另一个集合?