Ad *_*tum 6 java java-8 java-stream
我试图实现以下方案.
我有一个oldList,我试图将每个元素的出现次数乘以4,并newList使用Stream API 将它们放入a中.oldList的大小未知,每次都可能出现不同的大小.
我已经用两个传统的循环解决了这个问题,如下所示:
private List< Integer > mapHourlyToQuarterlyBased( final List< Integer > oldList )
{
List< Integer > newList = new ArrayList<>();
for( Integer integer : oldList )
{
for( int i = 0; i < 4; i++ )
{
newList.add( integer );
}
}
return newList;
}
Run Code Online (Sandbox Code Playgroud)
但我已经学习了新的Stream API,并希望用它来巩固我的知识.
Era*_*ran 16
您可以使用a 从原始元素flatMap生成Stream4个元素List,然后生成Stream所有这些元素中的一个元素.
List<Integer> mapHourlyToQuarterlyBased =
oldList.stream()
.flatMap(i -> Collections.nCopies(4, i).stream())
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
Tun*_*aki 10
您可以使用以下方法实现flatMap:
List<Integer> result = list.stream().flatMap(i -> Stream.of(i,i,i,i)).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
或者以更通用的方式:
List<Integer> result = list.stream().flatMap(i -> Stream.generate(() -> i).limit(4)).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
对于输入列表中的每个元素,这将创建一个由此元素组成的流,重复4次并对其进行平面映射.然后将所有元素收集到列表中.
| 归档时间: |
|
| 查看次数: |
464 次 |
| 最近记录: |