基于队列的 Scala Filter ArrayBuffer
Scala Filter ArrayBuffer based on a Queue
我有一个包含 Int 的 Arraybuffer。除此之外,我还有一个包含 Int 的队列。我想从我的 Arraybuffer 中删除队列中也存在的所有 Int。什么是执行此操作的有效方法。我可以使用 Filter 函数吗:
newArray = Arraybuffer.filter(_ not in Queue)
是的,您可以:
val q: Queue[Int] = ???
val a: ArrayBuffer[Int] = ???
a.filter(!q.contains(_))
我会为此使用 Set[A]
,尤其是当您的 ArrayBuffer[Int]
足够大时:
val queue = Queue[Int] = ???
val arrayBuffer: ArrayBuffer[Int] = ???
val set = queue.toSet
val filteredBuffer = arrayBuffer.filterNot(set.contains)
如果您的数组缓冲区包含唯一的整数(我们可以通过将其转换为集合来强制执行此操作),那么 diff
函数就是您想要的。
val queue: Queue[Int] = Queue(1,2,3)
val array: ArrayBuffer[Int] = ArrayBuffer(1,2,3,4,5,6)
array.toSet.diff(queue) // ArrayBuffer(4,5,6)
我有一个包含 Int 的 Arraybuffer。除此之外,我还有一个包含 Int 的队列。我想从我的 Arraybuffer 中删除队列中也存在的所有 Int。什么是执行此操作的有效方法。我可以使用 Filter 函数吗:
newArray = Arraybuffer.filter(_ not in Queue)
是的,您可以:
val q: Queue[Int] = ???
val a: ArrayBuffer[Int] = ???
a.filter(!q.contains(_))
我会为此使用 Set[A]
,尤其是当您的 ArrayBuffer[Int]
足够大时:
val queue = Queue[Int] = ???
val arrayBuffer: ArrayBuffer[Int] = ???
val set = queue.toSet
val filteredBuffer = arrayBuffer.filterNot(set.contains)
如果您的数组缓冲区包含唯一的整数(我们可以通过将其转换为集合来强制执行此操作),那么 diff
函数就是您想要的。
val queue: Queue[Int] = Queue(1,2,3)
val array: ArrayBuffer[Int] = ArrayBuffer(1,2,3,4,5,6)
array.toSet.diff(queue) // ArrayBuffer(4,5,6)