我有一些像List< List< Double>>的结构. listOfDoubles我需要将它转换为List< List< Integer>> listOfInteger.我在不使用Java 8的情况下编写代码.它看起来像:
List> integerList = new ArrayList<>();
for (int i = 0; i < doubleList.size(); i++) {
for (Double doubleValue : doubleList.get(i)) {
integerList.get(i).add(doubleValue.intValue());
}
}
我试图用foreach替换第二个,但不能因为我应该是最终的.如何使用Java 8方法编写此代码?
解决方法:
您可以流式传输“外部”列表,生成Stream< List< Double>.然后,流式传输每个“内部”列表,将每个元素转换为整数并收集结果.然后只收集“外部”流.如果你把它们放在一起,你会得到这样的东西:
List> integerList =
doubleList.stream()
.map(l -> l.stream()
.map(Double::intValue)
.collect(Collectors.toList()))
.collect(Collectors.toList());
标签:java,java-8,java-stream,list,foreach
来源: https://codeday.me/bug/20190727/1551928.html