【发布时间】:2018-07-08 00:44:30
【问题描述】:
我有两个相同模型类(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)
}
我们将不胜感激任何形式的帮助。
谢谢
【问题讨论】:
-
合并两个列表,然后制作一个从 String 到 Integer 的 hashmap,这是学生的 id 到出现次数,然后遍历 hashmap 并获取只有 1 次出现的键。跨度>
-
您可以创建从学生到出现次数的地图,只是为了最终得到学生列表