以下代码采用流,对其进行排序。如果存在应该应用的最大限制,则会应用它。
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.
这里,如果存在限制操作,则在其他内部,它不存在。流上的其他操作是相同的。
当maxLimit大于零时,是否有任何方法可以应用限制。在上面给出的代码块中,除了限制一个块中的操作外,重复相同的逻辑。
答案 0 :(得分:13)
您可以将代码拆分为以下部分:
final Stream stream = list.stream()
.sorted(comparator);
if (maxLimit > 0) {
stream = stream.limit(maxLimit);
}
return stream.collect(Collectors.toList());
在这种情况下,您不必像在初始示例中那样维护两个分支。
同样,在分配stream
变量时,值得使用特定的泛型类型,例如:如果list
是List<String>
,则使用Stream<String>
类型作为stream
变量。
答案 1 :(得分:6)
list.stream().sorted(comparator).limit(maxLimit>0 ? maxLimit: list.size()).collect(Collectors.toList())
查看限制的当前实施情况我相信它会检查限制是否小于当前大小,因此不会像我最初预期的那样低效