kotlin 数组查重
时间: 2024-06-23 15:00:50 浏览: 10
在Kotlin中,数组查重可以通过几种方法实现。一种常见的做法是使用HashSet,因为HashSet的特性就是不包含重复元素。下面是使用HashSet来查找数组中重复元素的一个简单示例:
```kotlin
fun findDuplicates(arr: IntArray): List<Int> {
val set = HashSet<Int>()
return arr.filter { !set.add(it) }
}
```
在这个函数中,`filter`方法接收一个谓词,对于数组中的每个元素,如果该元素不在HashSet中(即`!set.add(it)`为真),那么它会被包含在返回的结果列表中,因为这意味着它是第一次被添加到集合中,不是重复的。反之,如果添加失败(即元素已存在),`add`会返回`false`,那么这个元素会被过滤掉。
相关问题
kotlin list查重
在 Kotlin 中,List 查重可以通过几种方法来实现,这里提供两种常见的方法:
1. 使用 `distinct()` 函数:
`distinct()` 函数返回一个新的列表,其中包含原列表中不重复的元素。这是最简单直接的方法,如果列表中的元素是不可变的(如 Integer 或 String),那么它可以按值高效地去除重复。
```kotlin
val list: List<String> = listOf("a", "b", "c", "a", "d")
val uniqueList = list.distinct()
```
2. 使用 `groupingBy()` 和 `eachCount()`:
如果需要保留原列表并知道每个唯一元素的计数,可以使用 `groupingBy()` 函数将相同值的元素分组,然后用 `eachCount()` 计算每个组的大小。
```kotlin
val list: List<String> = listOf("a", "b", "c", "a", "d")
val (counts, duplicates) = list.groupingBy { it }.eachCount().partition { it.value > 1 }
```
`duplicates` 列表将包含重复的元素,`counts` 是一个映射,键是唯一的元素,值是它们在列表中出现的次数。
kotlin数组排序
好的,针对您的问题,可以使用 Kotlin 的 sort() 方法对数组进行排序。具体实现如下:
```kotlin
val arr = arrayOf(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5)
arr.sort()
println(arr.contentToString())
```
输出结果为:`[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]`
如果需要按照自定义规则进行排序,可以使用 sortWith() 方法,并传入一个 Comparator 对象。例如,按照数字的个位数从小到大排序:
```kotlin
val arr = arrayOf(32, 11, 45, 23, 67, 89, 5)
arr.sortWith(Comparator { a, b -> a % 10 - b % 10 })
println(arr.contentToString())
```
输出结果为:`[11, 32, 23, 45, 5, 67, 89]`