我有两个ListBuffer
s:
import scala.collection.mutable._
val lstbufWhichChange = ListBuffer("Core", "One", "Zero", "Right", "Top", "Else")
val lstbufStatic = ListBuffer("Core", "Right", "Left", "Zero", "One", "Two", "Top", "Bottom", "Else")
lstbufWhichChange
是lstbufStatic
的子集。我想要做的是,找到一种比较这两个集合的方法,如果lstbufWhichChange
具有与lstbufStatic
相同顺序的元素,即使它不包含所有这些元素(它是一个子集)。我怎么能这样做?
答案 0 :(得分:2)
使用内置函数的一种方法可以是: 首先获取列表中的公共元素
val commonEle = lstbufWhichChange.intersect(lstbufStatic)
之后,获取lstbufStatic
列表中存在的commonEle
元素
val list = lstbufStatic.filter(e => commonEle.contains(e))
list
应该等于commonEle
列表。
在您提供的示例中,lstbufWhichChange
在Right
后有one
,因此commonEle.equals(list)
将返回false
。但如果你交换这些元素,那么它将返回true。
答案 1 :(得分:2)
我的解决方案如下:
val res = lstbufWhichChange.foldLeft(true, lstbufStatic)((s, e) => {
val l = s._2.dropWhile(_ != e)
(s._1 && l.nonEmpty, l)
})
println(res._1)