在java中将列表的列表转换为列表

2022-09-02 05:10:01
List<List<String>> superlist = new ArrayList<List<String>>();

List<String> list1 = new ArrayList<String>();
list1.add("a1");
list1.add("a2");

List<String> list2 = new ArrayList<String>();
list2.add("b1");
list2.add("b2");

List<String> list3= new ArrayList<String>();
list3.add("c1");
list3.add("c2");

superlist.add(list1);
superlist.add(list2);
superlist.add(list3);

List<String> result= new ArrayList<>();

现在我想创建一个新列表,其中包含 中的所有值。此处的结果应包含superLista1,a2,b1,b2,c1,c2


答案 1

尝试像这样使用:flatMap

List<List<Object>> list = 
List<Object> lst = list.stream()
        .flatMap(Collection::stream)
        .collect(Collectors.toList());

答案 2

如果您使用的是Java < 8(并且不能使用s),则可以使用Guava的Iterables.concat在单行代码中执行此操作:Stream

List<String> merged = Lists.newArrayList(Iterables.concat(superList));

推荐