Подтвердить что ты не робот

Scala разница двух списков

У меня есть два списка:

val list1 = List("word1","word2","word2","word3","word1")
val list2 = List("word1","word4")

Я хочу удалить все вхождения элементов list2 из list1, т.е. хочу

List("word2","word2","word3") <= list1 *minus* list2

Я сделал list1 diff list2 который дает мне List("word2","word2","word3","word1"), который удаляет только первое вхождение "word1".

Я не могу преобразовать его в набор, потому что мне нужны знания о дубликатах (см. выше "word2" ). Что делать?

4b9b3361

Ответ 1

Вы можете

val unwanted = list2.toSet
list1.filterNot(unwanted)

удалить все элементы в list2. (Вам не нужно знать дубликаты в list2.)

Ответ 2

Вы можете попробовать следующее:

val list1 = List("word1","word2","word2","word3","word1")
val list2 = List("word1","word4")

println(list1.filterNot(list2.contains(_)))

Ответ 3

val list1 = List("word1","word2","word2","word3","word1")
val list2 = List("word1","word4") 
list1 diff list2

Это сделает это.