跳转到内容

Kotlin对(Pair)

来自代码酷

Kotlin对(Pair)是Kotlin标准库中提供的一种简单数据结构,用于存储两个相关联的值。它属于Kotlin的通用工具类,常用于临时组合数据或作为函数返回值。本文将详细介绍其语法、特性、实际应用及扩展功能。

概述[编辑 | 编辑源代码]

在Kotlin中,`Pair`是一个泛型类,定义如下:

  
data class Pair<out A, out B>(val first: A, val second: B)

它包含两个不可变属性:`first`和`second`,分别存储两个值。`Pair`是数据类(`data class`),因此自动生成`equals()`、`hashCode()`和`toString()`等方法。

创建Pair[编辑 | 编辑源代码]

可以通过构造函数或中缀函数`to`创建`Pair`:

  
// 方式1:构造函数  
val pair1 = Pair("Apple", 10)  

// 方式2:中缀函数to  
val pair2 = "Banana" to 5  

println(pair1)  // 输出: (Apple, 10)  
println(pair2)  // 输出: (Banana, 5)

解构声明[编辑 | 编辑源代码]

Kotlin支持对`Pair`进行解构声明,直接提取其属性:

  
val (fruit, quantity) = Pair("Orange", 8)  
println("Fruit: $fruit, Quantity: $quantity")  // 输出: Fruit: Orange, Quantity: 8

实际应用案例[编辑 | 编辑源代码]

场景1:函数多返回值[编辑 | 编辑源代码]

`Pair`可用于返回两个相关值,替代临时数据类:

  
fun calculateMinMax(list: List<Int>): Pair<Int, Int> {  
    return Pair(list.minOrNull() ?: 0, list.maxOrNull() ?: 0)  
}  

val (min, max) = calculateMinMax(listOf(3, 1, 4, 1, 5))  
println("Min: $min, Max: $max")  // 输出: Min: 1, Max: 5

场景2:Map初始化[编辑 | 编辑源代码]

`to`中缀函数常用于创建键值对:

  
val inventory = mapOf(  
    "Apple" to 10,  
    "Banana" to 5  
)  
println(inventory)  // 输出: {Apple=10, Banana=5}

与Triple的比较[编辑 | 编辑源代码]

Kotlin还提供`Triple`类用于存储三个值,语法类似:

  
val triple = Triple("A", 1, true)  
println(triple.third)  // 输出: true

性能注意事项[编辑 | 编辑源代码]

  • `Pair`是轻量级数据结构,适合临时组合数据。
  • 频繁访问`first`或`second`时,直接使用属性比解构更高效。

进阶:自定义扩展函数[编辑 | 编辑源代码]

可为`Pair`添加扩展函数,例如交换元素:

  
fun <A, B> Pair<A, B>.swap(): Pair<B, A> = Pair(second, first)  

val swapped = Pair(1, "One").swap()  
println(swapped)  // 输出: (One, 1)

总结[编辑 | 编辑源代码]

`Pair`是Kotlin中简洁高效的数据组合工具,适用于临时存储关联数据、函数多返回值等场景。结合解构声明和中缀函数`to`,能显著提升代码可读性。

模板:Kotlin数据结构导航