Kotlin 提供丰富的操作符和扩展方法,简化集合操作、范围判断、内容比较等场景的代码。以下是核心操作符和方法的详细说明及示例:
一、基础操作符
1. !=
(非等于)
-
作用 :判断两个对象是否不相等(基于
equals()
方法)。 -
示例代码:
kotlinval a = "Kotlin" val b = "Java" println(a != b) // true(调用 a.equals(b) 的否定)
2. in
和 !in
(成员操作符)
-
作用:判断元素是否在集合或范围内存在。
-
示例代码:
kotlinval list = listOf(1, 2, 3) val range = 1..10 println(2 in list) // true println(5 !in range) // false
3. 范围操作符(..
、until
、step
)
-
语法:
kotlin1..10 // 闭区间 [1, 10] 1 until 10 // 左闭右开 [1, 10) 10 downTo 1 step 2 // 步长为2的倒序区间
-
示例代码:
kotlinfor (i in 1..5 step 2) { print("$i ") // 输出:1 3 5 }
二、比较操作符
1. compareTo
(比较大小)
-
作用 :实现
Comparable
接口的类可定义比较逻辑。 -
示例代码:
kotlinclass Person(val age: Int) : Comparable<Person> { override fun compareTo(other: Person) = this.age - other.age } val p1 = Person(25) val p2 = Person(30) println(p1 < p2) // true(等价于 p1.compareTo(p2) < 0)
2. equals
(逻辑相等)
-
作用:判断对象内容是否相等(默认基于引用,数据类自动生成基于属性的实现)。
-
示例代码:
kotlindata class User(val name: String, val id: Int) val u1 = User("Alice", 1) val u2 = User("Alice", 1) println(u1 == u2) // true(数据类自动生成 equals)
3. contentEquals
(内容相等)
-
作用:比较数组或集合的内容是否相同。
-
示例代码:
kotlinval arr1 = arrayOf(1, 2, 3) val arr2 = arrayOf(1, 2, 3) println(arr1.contentEquals(arr2)) // true(内容相同) println(arr1 == arr2) // false(引用不同)
三、集合操作
1. sort
(排序)
-
作用 :对可变集合(如
MutableList
)进行原地排序。 -
示例代码:
kotlinval numbers = mutableListOf(3, 1, 4, 2) numbers.sort() // 自然排序 numbers.sortDescending() // 逆序排序 numbers.sortBy { it % 3 } // 自定义排序
2. binarySearch
(二分查找)
-
前提:集合必须已排序。
-
示例代码:
kotlinval sortedList = listOf(10, 20, 30, 40, 50) val index = sortedList.binarySearch(30) // 返回索引 2
四、数组操作
1. sort
(数组排序)
-
示例代码:
kotlinval arr = arrayOf(5, 3, 1, 4, 2) arr.sort() // 原地排序:[1, 2, 3, 4, 5] val sortedArr = arr.sortedArray() // 生成新数组
2. 其他数组方法
-
内容比较:
kotlinval a1 = intArrayOf(1, 2, 3) val a2 = intArrayOf(1, 2, 3) println(a1.contentEquals(a2)) // true
-
填充与复制:
kotlinval arr = IntArray(5) { it } arr.fill(0) // 所有元素置0 val copy = arr.copyOf() // 深拷贝
五、操作符重载与自定义行为
1. 自定义 in
操作符
-
实现 :在类中定义
contains
方法。kotlinclass Week(private val days: List<String>) { operator fun contains(day: String) = day in days } val week = Week(listOf("Mon", "Tue", "Wed")) println("Tue" in week) // true
2. 自定义比较逻辑
-
覆写
equals
:kotlinclass Product(val name: String) { override fun equals(other: Any?): Boolean { return (other as? Product)?.name?.startsWith("A") ?: false } } val p1 = Product("Apple") val p2 = Product("Banana") println(p1 == p2) // false(仅比较名称是否以 A 开头)
六、总结对比
操作符/方法 | 核心作用 | 适用场景 |
---|---|---|
!= |
非相等判断(基于 equals() ) |
所有对象比较 |
in / !in |
成员存在性检查 | 集合、范围、自定义类 |
.. / until |
定义数值范围 | 循环、区间判断 |
compareTo |
对象大小比较 | 排序、自定义顺序 |
contentEquals |
数组/集合内容比较 | 数组或集合的深比较 |
sort |
原地排序 | 可变集合/数组 |
binarySearch |
快速查找元素位置 | 已排序集合 |
通过合理使用这些操作符和方法,可以显著提升 Kotlin 代码的简洁性和可读性! 🚀