我正在尝试实现以下场景。
我有一个 oldList
,我正在尝试将每个元素的出现次数乘以 4,然后使用 Stream API 将它们放入 newList
中。 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;
}
但是我刚学了Stream API,想用它来巩固自己的知识。
最佳答案
您可以使用 flatMap
从原始 List
的每个元素生成一个包含 4 个元素的 Stream
,然后生成单个 所有这些元素的流
。
List<Integer> mapHourlyToQuarterlyBased =
oldList.stream()
.flatMap(i -> Collections.nCopies(4, i).stream())
.collect(Collectors.toList());
关于java - 将列表中每个元素的出现次数乘以 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38972738/