如何使用Java8流组合逻辑,根据列表大小条件添加到列表中

如何使用Java8流组合逻辑,根据列表大小条件添加到列表中,java,java-stream,Java,Java Stream,是否可以使用Java8流组合以下内容,若“getCount()”有一些值,则继续向同一列表添加元素,直到列表的大小超过getCount() List li=results().map(req->newrequestobject(req()).collect(Collectors.toList()); if(Objects.nonNull(getCount())){ while(li.size()如果允许使用Java9,它为流提供dropWhile(谓词)和takeWhile(谓词) int co

是否可以使用Java8流组合以下内容,若“getCount()”有一些值,则继续向同一列表添加元素,直到列表的大小超过getCount()

List li=results().map(req->newrequestobject(req()).collect(Collectors.toList());
if(Objects.nonNull(getCount())){

while(li.size()如果允许使用Java9,它为流提供
dropWhile(谓词)
takeWhile(谓词)

int count = 0;
List<RequestObject> li = results()
                         .map(mapping)
                         .takeWhile(obj -> {count++ <= getCount()});
int count=0;
列表li=结果()
.map(映射)
.takeWhile(obj->{count++这应该可以

        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;
        }
        k = 0;

        public static int getNext() {
          k += 10;
          return k;
        }
List List=IntStream.iterate(0,i->ii+1)
.map(b->getNext()).boxed()
.collect(Collectors.toList());
系统输出打印项次(列表);
公共静态int getCount(){
返回10;
}
k=0;
公共静态int getNext(){
k+=10;
返回k;
}

尝试基于
li
创建新收藏:

List collect=IntStream.range(0,getCount())
.mapToObj(i->li.get(i%li.size())
.collect(Collectors.toList());
更新 我假设您想要的可以在这个示例中显示(其中
getCount()
count
):

List li=新的数组列表(列表中的(“a”、“b”、“c”);
整数计数=2;
List collect=IntStream.range(0,计数)
.mapToObj(i->li.get(i%li.size())
.collect(Collectors.toList());
然后你会得到:

[a, b]
例如
count=10

[a, b, c, a, b, c, a, b, c, a]

是的,正确。我编辑了这篇文章。非常感谢@Andreasy你知道你一直在将列表的大小增加一倍,对吗?例如,如果列表最初有3个值,和
getCount()
返回
6
,然后您将得到一个包含12个值的列表,即每个初始值现在将显示4次。是的,我知道。我需要创建一个有效负载,使列表大小大于或小于基于计数值的有效负载。反复添加相同的列表
li.addAll(li)
?遗憾的是,我们仍然使用Java 8。感谢您的回复。@Abhinav,而且我相信还有一些第三方工具可用于此目的。请看一下本文列表大小与初始大小相同。它不会添加到list@Abhinav现在试试
[a, b, c, a, b, c, a, b, c, a]