IndexedSeq并删除多个元素

时间:2014-06-02 10:23:42

标签: scala scala-collections

我有mySeq: IndexedSeq[A]和另一个myIncludedSeq: IndexedSeq[A],其中myIncludedSeq的每个元素都包含在mySeq中。

我想从IndexedSeq[A]创建一个新的mySeq,但不包含myIncludedSeq中的所有元素。

我找不到任何有用的方法来解决这个问题。你会怎么做?

示例:

val mySeq = IndexedSeq("a", "b", "a", "c", "d", "a")
val myIncludedSeq = IndexedSeq("a", "d", "a")
//magic
val expectedResult = IndexedSeq("b", "c", "a") //the order does not matter

1 个答案:

答案 0 :(得分:3)

这个怎么样?

val original = IndexedSeq("a", "b", "a", "c", "d", "a")
val exclude = IndexedSeq("a", "d", "a")
val result = original.diff(exclude)
// IndexedSeq[String] = Vector(b, c, a)

来自list&#s; diff doc:

  

计算此列表与另一个序列之间的多集差异。   返回一个新列表,其中包含此列表的所有元素,但   一些出现的元素也出现在"排除"名单。如果   元素值x出现n次,然后出现前n次   x不会形成结果的一部分,但会出现以下任何事件   将