更新数组中的 case class 数据

Update case class data in an array

我正在尝试从数组更新大小写 class。
尝试更新数组中的 case class 数据,但我也必须删除旧记录

我试过如下

case class Data(str1: String, str2:String) { def updateMsg(msg : String) = this.copy(str2 = msg)}
val list = Array(Data("1", "2"), Data("2", "b"), Data("3", "c"))
list :+ list.filter(_.str1.equalsIgnoreCase("1"))(0).updateMsg("a")

我从上面的列表中得到的结果如下

Array[Data] = Array(Data(1,2), Data(2,b), Data(3,c), Data(1,a))

是否有更好的方法来更新现有案例 class 行?

一个简单的 map 应该可以做到:

list.map { data =>
  if (data.str1.equalsIgnoreCase("1")) {
    data.updateMsg("a")
  } else {
    data
  }
}

list.map {
  case data if data.str1.equalsIgnoreCase("1") =>
    data.updateMsg("a")
  case data =>
    data
}