我知道列表是不可变的,但我仍然对如何处理它感到困惑。我有两个字符串列表 - 例如:
var list1: List[String] = List("M", "XW1", "HJ", "K")
var list2: List[String] = List("M", "XW4", "K", "YN")
我想遍历这些列表并查看元素是否匹配。如果没有,程序将立即返回 false
。 .如果匹配,它将继续迭代,直到找到以 X
开头的元素。 .如果确实是 X
, 我要返回 true
不管数字是否相同。
我遇到的问题是目前我有一个条件说明如果两个元素不匹配,则返回 false
立即地。这是一个问题,因为显然 XW1
和 XW4
不一样,它将返回 false。我怎样才能绕过它并确定它与我的眼睛匹配,而不管数字是多少?
我还有一个计数器,它有两个长度的变量来解释列表可能具有不同长度的事实。我的计数器上升到最短列表:for (x <- 0 to (c-1))
(c 是柜台)。
最佳答案
您想使用 zipAll
和 forall
。
def compareLists(l1: List[String], l2: List[String]): Boolean =
l1.zipAll(l2, "", "").forall {
case (x, y) =>
(x == y) || (x.startsWith("X") && y.startsWith("X"))
}
请注意,我假设空字符串始终不同于任何其他元素。
关于string - 在 Scala 中比较字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64016343/