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

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

概述我有两个相同的模型类(STUDENT)列表,下面给出了示例学生对象结构,{"_id":"5a66d78690429a1d897a91ed","division":"G","standard":"X","section":"Secondary","

我有两个相同的模型类(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<Students>, prefStudents: List<Students>): List<Students> {    val consolIDated = prefStudents.filter {        prefStudents.any { students: Students -> it._ID == students._ID }    }    return prefStudents.minus(consolIDated)}

方法2.

internal fun getdistinctStudents(studentsList: List<Students>, prefStudents: List<Students>): List<Students> {    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 + List2return sum.groupBy { it.ID }    .filter { it.value.size == 1 }    .flatMap { it.value }
总结

以上是内存溢出为你收集整理的android – 从两个列表中获取不常见的元素 – KOTLIN全部内容,希望文章能够帮你解决android – 从两个列表中获取不常见的元素 – KOTLIN所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1116486.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存