【问题标题】:How to match a ListBuffer's items to an Array's item in Scala?如何将 ListBuffer 项与 Scala 中的 Array 项匹配?
【发布时间】:2021-12-09 06:15:16
【问题描述】:

所以我有一个用例,我有一个字符串的 ListBuffer [让我们称之为“A”],以及一个字符串数组(或者如果更简单,我们将其作为另一个 ListBuffer)[让我们称之为“B”] . A 或 B 中没有重复项

现在我想这样做:

if (A.isEmpty){
     // do something
}
else if (every item of 'A' must be present in 'B'){
     // do something else
}
else{
     // do something different
} 

这应该处理以下边缘情况:

  • B 为空 ['else if' 检查应该失败]
  • len(A)
  • 其他...

在这种情况下我应该如何编写 else if 块?

【问题讨论】:

  • else if (a.diff(b).isEmpty) ...
  • @jwvh 如果AB 短或者元素的顺序不同,这是否有效?
  • @Tim;是的,它确实。唯一可能得到错误结果的情况是 a 有一个重复元素未反映在 b 集合中,但 OP 已排除这种情况。
  • 酷 :) 我会假设 diff 是两个集合的分离,所以我觉得奇怪的是 a diff bb diff a 不同。

标签: string scala if-statement


【解决方案1】:

慢速版

A.forall(B.contains)

更快的版本

val bSet = B.to(Set)
A.forall(bSet.contains)

来自@jwvh 的一个版本可能在中间的某个地方

a.diff(b).isEmpty

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    • 2019-08-06
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    相关资源
    最近更新 更多