Sha*_*shi 4 java java-8 java-stream
下面的代码采用流,对其进行排序.如果存在应该应用的最大限制,则应用它.
if(maxLimit > 0) {
return list.stream().sorted(comparator).limit(maxLimit).collect(Collectors.toList());
} else {
return list.stream().sorted(comparator).collect(Collectors.toList());
}
//maxLimit, list, comparator can be understood in general terms.
Run Code Online (Sandbox Code Playgroud)
这里,如果存在限制操作,则在其他内部,它不存在.流上的其他操作是相同的.
当maxLimit大于零时,有没有办法应用限制.在上面给出的代码块中,重复相同的逻辑,除了限制一个块中的操作.
Szy*_*iak 13
您可以将代码拆分为以下部分:
final Stream stream = list.stream()
.sorted(comparator);
if (maxLimit > 0) {
stream = stream.limit(maxLimit);
}
return stream.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您不必像在初始示例中那样维护两个分支.
此外,在分配stream变量时,值得使用特定的泛型类型,例如,如果list是变量的List<String>则使用Stream<String>类型stream.
list.stream().sorted(comparator).limit(maxLimit>0 ? maxLimit: list.size()).collect(Collectors.toList())
Run Code Online (Sandbox Code Playgroud)
查看当前的限制实施情况,我认为它会检查限制是否小于当前大小,因此不会像我最初预期的那样低效
| 归档时间: |
|
| 查看次数: |
2510 次 |
| 最近记录: |