Aur*_*mae 13 java java-8 java-stream
我正在使用.txt文件读取数字BufferedReader.我想颠倒这种蒸汽中元素的顺序,这样当它们被收集时,它们将从最高到最低排列.我不想在构建数组后进行排序,因为我不知道它中可能有多少个元素,我只需要最高的N个元素.
in = new BufferedReader(reader);
int[] arr = in.lines()
.mapToInt(Integer::parseInt)
.sorted()
.limit((long) N)
.toArray();
Run Code Online (Sandbox Code Playgroud)
小智 13
在排序之前尝试否定值并在排序后否定(恢复正常):
in = new BufferedReader(reader);
int[] arr = in.lines()
.mapToInt(Integer::parseInt)
.map(i -> -i).sorted().map(i -> -i)
.limit((long) N)
.toArray();
Run Code Online (Sandbox Code Playgroud)
由于反向顺序不是自然顺序,sorted()因此不能用于反向排序。如果IntStream使用Stream<Integer>来代替,则可以使用Collections.reverseOrder()来以与自然顺序相反的顺序对流进行排序。然后,您可以致电mapToInt并转换为int[]。
int[] arr = in.lines()
.map(Integer::valueOf) // Extract Integer, not int
.sorted(Collections.reverseOrder()) // On Stream<Integer>
.limit(N)
.mapToInt(i -> i) // map Integer to int
.toArray();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7457 次 |
| 最近记录: |