MST

星途 面试题库

面试题:Kotlin模式匹配与泛型在复杂场景中的深度应用

设计一个Kotlin泛型函数,该函数接收一个列表,列表元素类型为泛型T。在函数内部通过模式匹配实现:如果列表为空,返回特定字符串;如果列表只有一个元素,且该元素是数字类型(Int、Double等),返回该数字的平方;如果列表元素个数大于1,且所有元素都是字符串类型,将这些字符串连接起来返回。请详细说明实现思路并给出完整代码。
39.3万 热度难度
编程语言Kotlin

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 定义一个泛型函数,接收一个泛型列表作为参数。
  2. 使用 when 表达式进行模式匹配:
    • 检查列表是否为空,为空则返回特定字符串。
    • 检查列表是否只有一个元素,且该元素是数字类型(通过 is 关键字判断),如果是则返回该数字的平方。
    • 检查列表元素个数是否大于1,且所有元素都是字符串类型(通过 all 函数判断),如果是则将这些字符串连接起来返回。

完整代码

fun <T> processList(list: List<T>): Any {
    return when {
        list.isEmpty() -> "列表为空"
        list.size == 1 && list.first() is Number -> (list.first() as Number).toDouble().pow(2)
        list.size > 1 && list.all { it is String } -> list.joinToString("")
        else -> "不满足任何条件"
    }
}