如何使用Java 8流组合逻辑以根据列表大小条件将其添加到列表中

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

是否有可能在下面使用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 stream java-stream
1个回答
0
投票

如果被允许使用Java 9,它将为流提供dropWhile(predicate)takeWhile(predicate)

int count = 0;
List<RequestObject> li = results()
                         .map(mapping)
                         .takeWhile(obj -> {count++ <= getCount()});

EDIT:在Java 8中,您可以查看this answer


0
投票

应该这样做。

        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;
    }
© www.soinside.com 2019 - 2024. All rights reserved.