Wiv*_*rge 2 java java-8 java-stream
public class Result {
...
private Integer averageRating;
}
Run Code Online (Sandbox Code Playgroud)
我有一个结果列表List<Result>。我想对它们进行排序averageRating,然后想要将特定索引形成为特定索引,例如 10 到 20。
我可以使用Collection.sort()using Comparator.comparing()then take sublist from list来做到这一点。但问题是更高的索引可能大于列表大小,这就是我必须手动处理的原因。像 10 到 20,但列表大小为 15,则将输出 5 个项目。
但是我如何使用 Java Stream API 做到这一点?
我尝试了一些但没有奏效:
List<Result> result = list.stream().sorted(e -> e.getAverageRating()).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
请尝试以下操作:
int from = 10;
int to = 20;
List<Result> result = list.stream()
.sorted(Comparator.comparing(Result::getAverageRating))
.skip(from)
.limit(to - from)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
它应该跳过排序流的前 10 个元素,然后取不超过指定范围的差值。
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |