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()函数。
网友评论