Scala:在具有不同结构的列表中查找差异

Scala: find diffs in lists with different structure

我需要在 不同 结构的两个列表中找到差异和匹配元素,例如 myBookstop5books,其中第一个数字是一本书两个列表中的 ID:

case class Book(id: Int, score: Int)

  val myBooks = Array(
    Book(117, 10),
    Book(34, 5),
    Book(85, 7),
    Book(55, 8),
    Book(21, 3)
  )

  val top5Books = Array(117,356,55,85,11)

结果应该在两个列表中:

val matched = Array(
    Book(117, 10),     
    Book(85, 7),
    Book(55, 8)
  )

val missed = Array(
    Book(34, 5),
    Book(21, 3)
  )

此处不能使用 diff,因为输入数组具有不同的结构。执行此操作的漂亮、干净的代码是什么?

您可以使用分区方式:

val (matched, missed) = myBooks.partition(book => top5Books.contains(book.id))