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<>();
Run Code Online (Sandbox Code Playgroud)
现在我想创建一个包含所有值的新列表superList.这里的结果应该包含a1,a2,b1,b2,c1,c2
Rah*_*thi 28
尝试这样使用flatMap:
List<List<Object>> list =
List<Object> lst = list.stream()
.flatMap(x -> x.stream())
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
如果您使用Java <8(并且不能使用Streams),则可以使用Guava的单行程序执行此操作Iterables.concat:
List<String> merged = Lists.newArrayList(Iterables.concat(superList));
Run Code Online (Sandbox Code Playgroud)