美文网首页
Kotlin 中集合去除重复元素

Kotlin 中集合去除重复元素

作者: 因为我的心 | 来源:发表于2023-04-14 19:11 被阅读0次

    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()函数。

    相关文章

      网友评论

          本文标题:Kotlin 中集合去除重复元素

          本文链接:https://www.haomeiwen.com/subject/omrtjdtx.html