我有一个包含Int的Arraybuffer。除此之外,我还有一个包含Int的队列。我想从我的Arraybuffer中删除队列中也存在的所有Int。什么是有效的方法来做到这一点。我可以使用Filter函数:
newArray = Arraybuffer.filter(_ not in Queue)
答案 0 :(得分:2)
我会使用Set[A]
,尤其是ArrayBuffer[Int]
足够大时:
val queue = Queue[Int] = ???
val arrayBuffer: ArrayBuffer[Int] = ???
val set = queue.toSet
val filteredBuffer = arrayBuffer.filterNot(set.contains)
答案 1 :(得分:2)
如果您的数组缓冲区包含唯一的int(我们可以通过将其转换为集合来强制执行此操作),那么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)
答案 2 :(得分:1)
是的,你可以:
val q: Queue[Int] = ???
val a: ArrayBuffer[Int] = ???
a.filter(!q.contains(_))