arraylist stream横转纵
时间: 2023-07-20 16:24:48 浏览: 51
您可以使用Java 8的流(Stream)API来将一个横向的ArrayList转换为纵向的列表。下面是一个示例代码:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class ArrayListStreamExample {
public static void main(String[] args) {
ArrayList<ArrayList<String>> horizontalList = new ArrayList<>();
horizontalList.add(new ArrayList<String>() {{ add("A"); add("B"); add("C"); }});
horizontalList.add(new ArrayList<String>() {{ add("D"); add("E"); add("F"); }});
horizontalList.add(new ArrayList<String>() {{ add("G"); add("H"); add("I"); }});
List<List<String>> verticalList = horizontalList.stream()
.flatMap(List::stream)
.collect(Collectors.groupingBy(i -> horizontalList.indexOf(i) % horizontalList.size()))
.values().stream()
.collect(Collectors.toList());
System.out.println(verticalList);
}
}
```
在这个代码中,我们首先创建了一个横向的ArrayList,其中包含了三个包含三个元素的列表。然后我们使用流API的flatMap操作将所有元素平铺到一个新的流中。接着,我们使用groupingBy操作将平铺后的元素按照它们在原始列表中的行位置进行分组。最后,我们使用toList操作来将分组后的元素列表收集到一个新的列表中,并将其打印出来。这样,我们就将一个横向的ArrayList转换为了一个纵向的列表。