首页 > 解决方案 > 如何在案例类列表中查找字符串

问题描述

我有一个案例课Color

scala> case class Color(code: String, qty: String, shadecode: String, foo: Int)

我有一个案例类列表

scala> val c = List[Color](Color("100", "10", "99"), Color("200", "20", "88"), Color("300", "10", "99"))

如何确定此字符串是否存在于列表中:

scala> val colorString = "1001099"

字符串的约定总是相同的。前三个字符是code,接下来两个是qty,最后两个是shadecode

我尝试了以下方法,但它不起作用,因为我没有传递任何值foo

def doesExist(s: String, colors: Color): Boolean = {
  return colors.exists(_==Color(code= s.substring(0,3), qty = s.substring(3,4), shadecode = s.substring(5,6)))
}

标签: scalalist

解决方案


您应该尽早创建密钥,以便搜索更快

case class Color(code: String, qty: String, shadecode: String) {
  val k = s"$code$qty$shadecode"
}
val c = List[Color](Color("100", "10", "99"), Color("200", "20", "88"), Color("300", "10", "99"))
c.filter(_.k == "1001099") // Color(100,10,99)
c.exists(_.k == "1001099") // true    

推荐阅读