J'ai deux listes de la même classe modèle (STUDENT), un exemple de structure d'objet étudiant est donné ci-dessous,
{
"_id": "5a66d78690429a1d897a91ed",
"division": "G",
"standard": "X",
"section": "Secondary",
"lastName": "Sawant",
"middleName": "Sandeep",
"firstName": "Shraddha",
"pin": 12345,
"isEditable": true,
"isTracked": false
}
Une liste contient 3 objets et une autre 2. Disons que la liste A contient 1, 2, 3 étudiants et que la liste B contient 1, 2, 3 étudiants.
Ma question est donc la suivante : existe-t-il des fonctions intégrées pour obtenir l'élément non commun ? en comparant seulement l'identifiant ? Sinon, comment puis-je résoudre ce problème ?
Pour votre information, voici les deux approches que j'ai utilisées pour résoudre le problème, mais j'ai échoué lamentablement.
Approche 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)
}
Approche 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)
}
Toute forme d'aide sera grandement appréciée.
Merci
2 votes
Consolidez les deux listes et créez une carte de hachage (hashmap) de la chaîne à l'entier qui est l'identifiant de l'étudiant au nombre d'occurrences, puis bouclez sur la carte de hachage et récupérez les clés qui n'ont qu'une seule occurrence.
0 votes
Vous pouvez créer une correspondance entre l'étudiant et le nombre d'occurrences afin d'obtenir la liste des étudiants à la fin.