android 多元素列表,android – 从两个列表中获取不常见的元素 – KOTLIN

我有两个相同的模型类(STUDENT)列表,下面给出了示例学生对象结构,

{

"_id": "5a66d78690429a1d897a91ed",

"division": "G",

"standard": "X",

"section": "Secondary",

"lastName": "Sawant",

"middleName": "Sandeep",

"firstName": "Shraddha",

"pin": 12345,

"isEditable": true,

"isTracked": false

}

一个列表有3个对象,另外2个.比方说,列表A有1,2,3个学生,列表B有1,2个

所以我的问题是有任何内置函数通过比较id来获取不常见的元素吗?如果不是我怎么能解决这个问题.

仅供参考,以下是我要解决的两种方法,但却失败了.

方法1.

internal fun getDistinctStudents(studentsList: List, prefStudents: List): List {

val consolidated = prefStudents.filter {

prefStudents.any { students: Students -> it._id == students._id }

}

return prefStudents.minus(consolidated)

}

方法2.

internal fun getDistinctStudents(studentsList: List, prefStudents: List): List {

val consolidatedStudents = studentsList + prefStudents

val distinctStudents = consolidatedStudents.distinctBy{ it._id }

return prefStudents.minus(distinctStudents)

}

任何形式的帮助将不胜感激.

谢谢

解决方法:

更多的Kotlin方式来实现Ahmed Hegazy发布的内容.地图将包含元素列表,而不是键和计数.

使用HashMap和Kotlin内置插件. groupBy使用Lambda(在本例中为id)中定义的键创建一个Map,以及一个项目列表(此场景的列表)

然后筛选出列表大小不是1的条目.

最后,将其转换为单个学生列表(因此flatMap调用)

val list1 = listOf(Student("1", "name1"), Student("2", "name2"))

val list2 = listOf(Student("1", "name1"), Student("2", "name2"), Student("3", "name2"))

val sum = list1 + list2

return sum.groupBy { it.id }

.filter { it.value.size == 1 }

.flatMap { it.value }

标签:android,kotlin,list

来源: https://codeday.me/bug/20190716/1474116.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值