Mos*_*ani -1 java stream java-stream
我有listData (List<String>)一个getList接受String作为参数的方法(例如"java")并返回一个List<String>(例如["j","a","v","a"]).我需要将这些列表收集到一个列表中.我试过了addAll,它工作正常:
List<String> listData = Arrays.asList("java","Stream","laMbdA");
List<String> resultList = new ArrayList<>();
listData.stream()
.map(this::getList) // acccepts String as an argument and returns List<String>
.forEach(resultList::addAll);
Run Code Online (Sandbox Code Playgroud)
如果我尝试Collectors.toList(),我会得到一个List<List<String>>
listData.stream()
.map(this::getList)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
有什么方法Collectors可以代替addAll吗?
你需要flatMap:
List<String> resultList =
listData.stream()
.flatMap(s -> getList(s).stream())
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)