Kotlin 中集合去除重复元素

1、集合对象去除重复元素

subtract() 方法从 A 集合中去除 B 集合中的元素。

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //AppCompatActivity设置无title必须使用这个
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE)
        setContentView(R.layout.activity_main)

        val user1 = UserBean("小明",22)
        val user2 = UserBean("小刚",23)
        val user3 = UserBean("小亮",24)
        val user4 = UserBean("小微",25)
        val user5 = UserBean("小池",26)

        val a = listOf(1, 2, 3, 4, 5)
        val b = listOf(3, 4, 5, 6, 7)

        //a对b去重
        val result1 = a.subtract(b)
        val result2 = a.minus(b)
        Log.d("lyy","结果1:${result1}") //[1, 2]
        Log.d("lyy","结果2:${result2}") //[1, 2]


        val c1 = arrayListOf(user1,user2,user3,user4)
        val c2 = arrayListOf(user3,user4,user5)

        val result3 = c1.subtract(c2)
        val result4 = c1.minus(c2)

        Log.d("lyy","结果3:${result3}") //[UserBean(name=小明, age=22), UserBean(name=小刚, age=23)]
        Log.d("lyy","结果4:${result4}") //[UserBean(name=小明, age=22), UserBean(name=小刚, age=23)]
        
    }
}

2、minus()方法

在Kotlin中,minus()是一个集合操作函数,用于从集合中删除指定元素并返回新的集合。它可以用于List、Set和Map集合类型。下面是minus()函数的使用示例:

1、从List中删除指定元素:

val list = listOf(1, 2, 3, 4, 5)
val newList = list.minus(3)
println(newList) // 输出 [1, 2, 4, 5]

2、从Set中删除指定元素:

val set = setOf("apple", "banana", "orange")
val newSet = set.minus("banana")
println(newSet) // 输出 [apple, orange]

3、从Map中删除指定键值对:

val map = mapOf("a" to 1, "b" to 2, "c" to 3)
val newMap = map.minus("b")
println(newMap) // 输出 {a=1, c=3}

需要注意的是,minus()函数返回的是一个新的集合,原始集合并不会被修改。如果需要修改原始集合,可以使用minusAssign()函数。

3、两个数组合并,并更新最新数据

Kotlin集合中 val c1 = arrayListOf(user1,user2,user3,user4)
val c2 = arrayListOf(user3,user4,user5),怎么c2数据更新到c1集合,并且c1集合不能包含重复元素,假如c2中对象的年龄发生变化,c1也要更新到最新年龄


class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //AppCompatActivity设置无title必须使用这个
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE)
        setContentView(R.layout.activity_main)

        val user1 = UserBean("小明",22)
        val user2 = UserBean("小刚",23)
        val user3 = UserBean("小亮",24)
        val user4 = UserBean("小微",25)
        val user5 = UserBean("小池",26)

        val user6 = UserBean("小明",100)
        var c1 = mutableListOf<UserBean>(user1,user2,user3,user4)

        val c2 = arrayListOf(user2,user3,user4,user5,user6)

        // 添加c2中的元素到c1中
        c1.addAll(c2)
        Log.d("lyy","111:${c1}")
        // 去除重复元素
       var c3 = c1.distinct() as ArrayList<UserBean>
        Log.d("lyy","222:${c3}")
        // 遍历c1集合,更新年龄
        for (i in 0 until c3.size) {
            val user = c3[i]
            for (j in 0 until c2.size) {
                val newUser = c2[j]
                if (user.name == newUser.name) {
                    user.age = newUser.age
                    break
                }
            }
        }

        //[UserBean(name=小明, age=100), UserBean(name=小刚, age=23), UserBean(name=小亮, age=24), UserBean(name=小微, age=25), UserBean(name=小池, age=26), UserBean(name=小明, age=100)]
        Log.d("lyy","结果5:${c3}")
    }
}


4、 distinct()使用

Kotlin中的distinct()函数用于返回一个包含原始集合中不同元素的新集合。它可以应用于任何实现了Iterable接口的集合类型,例如List、Set、Map等。

使用distinct()函数的语法如下:

fun <T> Iterable<T>.distinct(): List<T>

其中,<T>表示泛型类型,Iterable<T>表示实现了Iterable接口的集合类型,distinct()函数返回一个List<T>类型的新集合。下面是一个使用distinct()函数的示例:

val list = listOf(1, 2, 3, 2, 4, 3, 5)
val distinctList = list.distinct()
println(distinctList) // 输出 [1, 2, 3, 4, 5]

在上面的示例中,我们创建了一个包含重复元素的List集合,然后使用distinct()函数获取不同的元素,最后输出结果为[1, 2, 3, 4, 5]。需要注意的是,distinct()函数会保留原始集合中的元素顺序,因此返回的新集合中元素的顺序与原始集合中的顺序相同。如果需要对元素进行排序,可以使用sorted()函数。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容