【问题标题】:Scala two varying size list concatenate based on conditionScala 两个不同大小的列表根据条件连接
【发布时间】:2020-10-01 06:23:23
【问题描述】:

我是 scala 的新手,并试图根据条件连接两个不同大小的列表, 以下是列表,

val check1:String = "NULL||BLANK||LENGTH"
val check2:String = "LENGTH||DUPLICATE"
val check3:String = "NUMERIC"
val checkLists = List(check1,check2,check3)

checkLists: List[String] = List(NULL||BLANK||LENGTH, LENGTH||DUPLICATE, NUMERIC)

val condList = List(">=2","<7")

我正在尝试根据条件连接 checkLists 和 condList 并创建新列表,每当 List 包含字符串“LENGTH”时,它应该与 condList 连接,如下所示

List(NULL||BLANK||LENGTH~>=2, LENGTH~<7||DUPLICATE, NUMERIC)

我可以使用 zip、foreach 和 case 来连接两个大小相同的列表,但在这里我遇到了不同大小的列表的问题。

【问题讨论】:

  • zipAll 可以处理不同长度的列表

标签: list scala foreach collections


【解决方案1】:

使用zipAll 将给出您正在寻找的答案:

checkLists.zipAll(condList, "", "").map {
  case (check, cond) => check.replaceAll("LENGTH", "LENGTH~" + cond)
}

List(NULL||BLANK||LENGTH~>=2, LENGTH~<7||DUPLICATE, NUMERIC)

condList 的缺失元素为"",但如果需要,可以使用不同的默认条件。

注意,如果第二个LENGTH字符串在checkLists的第三个元素而不是第二个元素中,它不会得到任何条件。这可能是也可能不是必需的。

【讨论】:

  • 感谢 Tim 让我了解 zipAll!我更改了代码以获取 cond 列表的静态列表元素。
猜你喜欢
  • 1970-01-01
  • 2016-11-18
  • 1970-01-01
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
  • 2019-12-18
  • 1970-01-01
  • 2017-11-30
相关资源
最近更新 更多