Retronym-решение в порядке, если у вас нет повторяющихся элементов, и вы не заботитесь о заказе.Однако вы не указываете, что это так.
Следовательно, вероятно, будет наиболее эффективно преобразовать y
в набор (не x
).Нам потребуется только один раз просмотреть список, и у нас будет быстрый O (log (n)) доступ к набору.
Все, что вам нужно, это
x filterNot y.toSet
// res1: List[Int] = List(3)
edit:
также есть встроенный метод, который еще проще:
x diff y
(я посмотрел на реализацию; она выглядит довольно эффективно, используя HashMap для подсчета вхождений.)