Вы можете использовать intersect для извлечения общих элементов из двух списков:
val l1 = listOf<Int>(1, 2, 3, 4, 5, 6, 7, 8, 9)
val l2 = listOf<Int>(1, 3, 5, 7, 9)
println(l1.intersect(l2))
Все, что вам нужно сделать, это определить равенство между двумя элементами:
class A(val name: String) {
override operator fun equals(other: Any?): Boolean {
if (other is B)
return this.name == other.anotherFieldForName
return false
}
}
class B(val anotherFieldForName: String)
val l1 = listOf<A>(A("Bob"), A("Alice"), A("Margoulin"))
val l2 = listOf<B>(B("Bob"), B("Margoulin"))
println(l1.intersect(l2))
println(l2.intersect(l1))