打平:操作嵌套的集合,则可能会发现提供对嵌套集合元素进行打平访问的标准库函数
- 第一个函数为
flatten()
。可以在一个集合的集合(例如,一个Set
组成的List
)上调用它。 该函数返回嵌套集合中的所有元素的一个List
。
val numberSets = listOf(setOf(1, 2, 3), setOf(4, 5, 6), setOf(1, 2))
println(numberSets.flatten())
result ------>
[1, 2, 3, 4, 5, 6, 1, 2]
- 另一个函数——
flatMap()
提供了一种灵活的方式来处理嵌套的集合。 它需要一个函数将一个集合元素映射到另一个集合。 因此,flatMap()
返回单个列表其中包含所有元素的值。 所以,flatMap()
表现为map()
(以集合作为映射结果)与flatten()
的连续调用。
需要transform 自定义
data class StringContainer(val values: List<String>)
val containers = listOf(
StringContainer(listOf("one", "two", "three")),
StringContainer(listOf("four", "five", "six")),
StringContainer(listOf("seven", "eight"))
)
println(containers.flatMap { it.values })
result ------>
[one, two, three, four, five, six, seven, eight]
网友评论