是否有可能在下面使用Java 8流进行组合,如果“ getCount()”具有某些值,则继续将元素添加到同一列表中,直到列表的大小大于getCount()。
List<RequestObject> li = results().map(req -> new RequestObject(req())).collect(Collectors.toList());
if(Objects.nonNull(getCount())){
while(li.size() <= getCount()) {
li.addAll(li);
}
}
如果被允许使用Java 9,它将为流提供dropWhile(predicate)
和takeWhile(predicate)
。
int count = 0;
List<RequestObject> li = results()
.map(mapping)
.takeWhile(obj -> {count++ <= getCount()});
EDIT:在Java 8中,您可以查看this answer
应该这样做。
List<Integer> list = IntStream.iterate(0, i -> i < getCount(), i -> i+1)
.map(b -> getNext()).boxed()
.collect(Collectors.toList());
System.out.println(list);
public static int getCount() {
return 10;
}
public static int getNext() {
k += 10;
return k;
}