Java 8 : vertical slicing an array of Lists

标签 java java-8

我正在学习 Java 8 lambda 和流。 所以,我得到了一系列长度不同的列表。列表包含整数。

在另一个列表列表中收集垂直切片的最佳方法是什么,即从切片 0 中的所有原始列表中收集索引为 0 的所有整数,在切片 1 中收集索引 1 等等,直到最长列表的长度(填充较短的列表为零)

我知道为此手动编写几个传统循环代码很简单,但是如何使用 Java 8 功能来实现呢?

最佳答案

这是一个非常有趣的问题 - 感谢您发帖。我相信您会看到一些有趣的答案。这是我的尝试:

List<Integer> source[];
List<List<Integer>> slices = IntStream.range(0, Arrays.stream(source).mapToInt(List::size).max().getAsInt())
     .mapToObj(index -> Arrays.stream(source).map(list -> list.size() > index ? list.get(index) : 0)
         .collect(Collectors.toList()))
     .collect(Collectors.toList())

关于Java 8 : vertical slicing an array of Lists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27837212/

相关文章:

java - 仅在点之后替换括号

spring - Com Smoketurner dropwizard-swagger 与 dropwizard 1.1.4 在specFilter 类中抛出空指针异常

java - 如何在树莓派上运行javafx

java - 在 Java 中使用 SecureRandom

java - HornetQ 重新连接尝试无法与 DefaultMessageListenerContainer 一起使用

java - Selenium 将文本发送到密码字段

java-8 - Vavr性能测试

java - 增加 IntStream 外部的整数值

java - 错误:java.lang.RuntimeException:java.lang.ClassNotFoundException:类WordCountExample $ Map找不到

java - 默认包是否包含在包级别访问权限中?