如何使用Java8流组合逻辑,根据列表大小条件添加到列表中
是否可以使用Java8流组合以下内容,若“getCount()”有一些值,则继续向同一列表添加元素,直到列表的大小超过getCount()如何使用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
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]