当数字等于0时,如何跳过流中的.limit(number)?

问题描述 投票:3回答:1

我有一个java代码,该代码提供items中的对象。它基于maxNumber限制它们:

items.stream()
     .map(this::myMapper)
     .filter(item -> item != null).limit(maxNumber)
     .collect(Collectors.toList());

它正常工作,但问题是-当maxNumber == 0时,有没有一种跳过限制的方法?我知道我可以做到:

if (maxNumber == 0) {
    items.stream()
         .map(this::myMapper)
         .filter(item -> item != null)
         .collect(Collectors.toList());
} else {
    items.stream()
         .map(this::myMapper)
         .filter(item -> item != null).limit(maxNumber)
         .collect(Collectors.toList());
}

但是也许有更好的方法,您想到什么了吗?谢谢!

java java-8 stream java-stream
1个回答
0
投票
我想是

.limit(maxNumber==0?Long.MAX_VALUE:maxNumber)

将完成技巧吗?
© www.soinside.com 2019 - 2024. All rights reserved.