Fab*_*ian 7 list java-8 kotlin java-stream
以下代码(用Kotlin编写)从列表列表中提取元素.它有效,但看起来相当难看,难以阅读.
有没有更好的方法来编写与java流api相同的方法?(例子可以用Kotlin或Java给出)
val listOfLists: List<Any> = ...
val outList: MutableList<Any> = mutableListOf()
listOfLists.forEach {
list ->
if (list is ArrayList<*>) list.forEach {
l ->
outList.add(l)
}
}
return outList;
Run Code Online (Sandbox Code Playgroud)
Grz*_*rek 15
在Kotlin中,它非常简单,没有任何过多的样板:
val listOfLists: List<List<String>> = listOf()
val flattened: List<String> = listOfLists.flatten()
Run Code Online (Sandbox Code Playgroud)
flatten()
和做的一样 flatMap { it }
在Java中,您需要使用Stream API:
List<String> flattened = listOfLists.stream()
.flatMap(List::stream)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
您还可以在Kotlin中使用Stream API:
val flattened: List<String> = listOfLists.stream()
.flatMap { it.stream() }
.collect(Collectors.toList())
Run Code Online (Sandbox Code Playgroud)
你可以flatMap
列出每个:
List<List<Object>> listOfLists = ...;
List<Object> flatList =
listOfLists.stream().flatMap(List::stream).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)