比较 ListBuffer 中的元素

Comparing the elements in a ListBuffer

我有两个 ListBuffer

  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")

lstbufWhichChangelstbufStatic 的子集。我想做的是,找到一种方法来比较这两个集合,如果 lstbufWhichChange 的元素顺序与 lstbufStatic 相同,即使它不包含所有元素(这是一个子集)。我该怎么做?

使用内置函数的一种方法是: 先获取两个列表中的共同元素

  val commonEle = lstbufWhichChange.intersect(lstbufStatic)

之后,从 lstbufStatic 中获取出现在 commonEle 列表中的元素

  val list = lstbufStatic.filter(e => commonEle.contains(e))

list 应该等于 commonEle 列表。

在您提供的示例中,lstbufWhichChangeone 之后有 Right,因此,commonEle.equals(list) 将 return false。但是,如果你交换这些元素,那么它将 return 为真。

我的解决方案如下:

  val res = lstbufWhichChange.foldLeft(true, lstbufStatic)((s, e) => {
    val l = s._2.dropWhile(_ != e)
    (s._1 && l.nonEmpty, l)
  })

  println(res._1)