搜索案例类列表

Gov*_*ngh -1 collections scala case-class scala-collections

我需要搜索案例类示例列表:在下面的示例中,我想知道teamList包含name=php与否.

scala> case class Team(name: String, image: String, nMember: BigInt, nYear: BigInt)
defined class Team

scala> val teamList=List(Team("scala","s.jpg",58,5),Team("java","cup.jpg",5400,18),Team("php","elephant.jpg",5800,8))
teamList: List[Team] = List(Team(scala,s.jpg,58,5), Team(java,cup.jpg,5400,18), Team(php,elephant.jpg,5800,8))
Run Code Online (Sandbox Code Playgroud)

tux*_*dna 8

你可以使用filter操作:

scala> case class Team(name: String, image: String, nMember: BigInt, nYear: BigInt)
defined class Team

scala> val teamList=List(Team("scala","s.jpg",58,5),Team("java","cup.jpg",5400,18),Team("php","elephant.jpg",5800,8))
teamList: List[Team] = List(Team(scala,s.jpg,58,5), Team(java,cup.jpg,5400,18), Team(php,elephant.jpg,5800,8))

scala> teamList.filter( _.name.contains("php") )
res0: List[Team] = List(Team(php,elephant.jpg,5800,8))
Run Code Online (Sandbox Code Playgroud)

仅检查是否存在这样的元素:

scala> teamList.exists( _.name.contains("php") )
res5: Boolean = true
Run Code Online (Sandbox Code Playgroud)

对于更复杂的匹配,您绝对可以进行case-match模式匹配.

scala> teamList.filter( _ match { case Team("php", _, _, _) => true case _ => false } )
res2: List[Team] = List(Team(php,elephant.jpg,5800,8))
Run Code Online (Sandbox Code Playgroud)