面试题答案
一键面试- 实现思路:
- 首先,利用Kotlin的函数式编程特性,如
flatMap
、filter
和map
等函数来遍历复杂的嵌套结构。 - 对于统计所有
String
类型对象长度总和,通过filterIsInstance
筛选出String
类型的对象,然后使用map
获取其长度,最后用sum
函数求和。 - 对于自定义数据类对象,同样使用
filterIsInstance
筛选出来,再根据某个属性使用sortBy
或sortByDescending
进行排序,之后可以使用map
等函数进行所需的计算。
- 首先,利用Kotlin的函数式编程特性,如
- 关键代码: 假设自定义数据类如下:
data class CustomData(val id: Int, val value: String)
假设复杂的不可变数据结构如下:
val complexData: Map<String, List<Any>> = mapOf(
"key1" to listOf("abc", CustomData(1, "def"), "ghi"),
"key2" to listOf(CustomData(2, "jkl"), "mno")
)
统计String
类型对象长度总和的代码:
val stringLengthSum = complexData.flatMap { it.value }
.filterIsInstance<String>()
.map { it.length }
.sum()
对自定义数据类对象按id
属性排序并做计算(假设计算value
的长度总和)的代码:
val customDataCalculation = complexData.flatMap { it.value }
.filterIsInstance<CustomData>()
.sortedBy { it.id }
.map { it.value.length }
.sum()