遍历案例类列表,仅输出单个案例类

时间:2020-04-20 21:08:53

标签: scala scala-collections

如何遍历案例类列表,仅输出单个案例类,选择唯一符合条件的行。

例如,对于案例类abc的列表,我想捕获满足某些条件的行。

case class abc(id: int, mod: Int, a: Int, b: Int)
case class output(id: int, mod: Int, calc: Int)

val a = List( abc(1, 101, 56, 47),
              abc(1, 201, 34, 23))

val out1: Option[Output] = Some(output(1, 101, 103))

val b = List( abc(1, 101, 56, 47)
              abc(1, 202, 47, 56))

val out2: Option[Output] = Some(output(1, 202, 103))

1 个答案:

答案 0 :(得分:2)

通常,您可以通过以下方法完成自己想做的事情:

list.foldLeft(None: Option[output]) {
  case (Some(oldMax), a) =>
    val newMax = ... // calculate output
    Some(if (check if new output is bigger) newMax else oldMax)
  case (None, a)
    Some(calculate first max)
}

我不会实现输出的比较和计算,不会完全破坏乐趣。

相关问题