Сравнение элементов в ListBuffer

У меня два ListBuffers:

  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 даже если он не содержит их всех (это подмножество). Как я могу это сделать?

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.

Мое решение заключается в следующем:

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

  println(res._1)
Другие вопросы по тегам