Интуитивно понятный способ
В каждом подсписке отфильтруйте элементы, содержащиеся во всех подсписках, затем выровняйте и удалите дубликаты:
val result1 = list.flatMap(_.filter(e => list.forall(_.contains(e)))).toSet
Более эффективный способ
Найдите наименьший подсписок и выберите элементы, которые есть в каждом подсписке:
val result2 = list.minBy(_.size).filter(e => list.forall(_.contains(e))).toSet
Математический способ
Повороткаждый подсписок в наборе и пересекают их:
val result3 = list.map(_.toSet).reduce(_.intersect(_))