Scala différence de deux listes

j'ai deux listes:

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

je veux supprimer toutes les occurrences de list2list1, c'est à dire que je veux

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

j'ai fait list1 diff list2 ce qui me donne List("word2","word2","word3","word1") qui supprime seulement la première occurrence de "word1".

Je ne peux pas le convertir en sets parce que j'ai besoin de connaissances sur les doublons (voir "word2" ci-dessus). Que faire?

26
demandé sur kiritsuku 2013-04-29 15:58:45

2 réponses

Vous pouvez

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

pour supprimer tous les articles de list2. (Vous n'avez pas besoin de connaissances des doublons list2.)

53
répondu Rex Kerr 2013-04-29 21:41:53

Vous pouvez essayer ceci:

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

println(list1.filterNot(list2.contains(_)))
7
répondu cmbaxter 2013-04-29 12:03:18