java - 如何以相反的顺序对 IntStream 进行排序

标签 java java-8 java-stream

我正在使用 BufferedReader 从 .txt 文件中读取数字。我想颠倒这个 Steam 中元素的顺序,这样当它们被收集时,它们将从最高到最低排列。我不想在构建数组后进行排序,因为我不知道其中可能有多少元素,我只需要最高的 N 个元素。

in = new BufferedReader(reader);
                int[] arr = in.lines()
                        .mapToInt(Integer::parseInt)
                        .sorted()
                        .limit((long) N)
                        .toArray();

最佳答案

尝试在排序前取反值并在排序后取反(恢复正常):

in = new BufferedReader(reader);
int[] arr = in.lines()
              .mapToInt(Integer::parseInt)
              .map(i -> -i).sorted().map(i -> -i)
              .limit((long) N)
              .toArray();

关于java - 如何以相反的顺序对 IntStream 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30740471/

相关文章:

java - 使用 Mockito/Powermock 框架模拟最终私有(private)变量

java - `thenRunAsync(...)` 和 `CompletableFuture.runAsync(() -> { ... });` 有关联吗?

使用 SonarQube 进行 Java 8 迁移分析

java - 如何从 int 数组(Java)中删除空元素?

Java 8 Stream 丢失类型信息

Java 泛型,未绑定(bind)通配符 <?> 与 <Object>

java - 必须只接受特定数值的 validator

java - 使用 Java 8 lambdas/transformations 组合和展平两个 Map

Java 流 : Combining two collections into a map

java - 如何显示特定接口(interface)的 IP 地址?