[英]How to make group of same elements in list using scala?
假设我们有一个案例班学生
case class Student(name: String,roll: String)
和学生名单
List(Student("a","123"),Student("b","345"),Student("a","678"),Student("b","321"))
我想建立同名的群组,例如
List(Student("a","123"),Student("a","678")) , List(Student("b","345"),Student("b","321"))
如何使用Scala做到这一点?
这是一种实现方法:
case class Student(name: String,roll: String)
val list = List(Student("a","123"),Student("b","345"),Student("a","678"),Student("b","321"))
val groupedList = list.groupBy(_.name).values.toList
// groupedList: List[List[Student]] = List(
// List(Student(b,345), Student(b,321)), List(Student(a,123), Student(a,678))
// )
如果您要查找List[List[Student]]
则需要将Student
分组为列表
val groups = List( List(Student("a","123"),Student("a","678")), List(Student("b","345"),Student("b","321")) )
如果您正在寻找Map[String, List[Student]]
val groups = Map("a" -> List(Student("a","123"),Student("a","678")), "b" -> List(Student("b","345"),Student("b","321")))
您可以在列表上使用groupBy
,然后提取值
scala> case class Student(name: String,roll: String)
defined class Student
scala> val l = List(Student("a","123"),Student("b","345"),Student("a","678"),Student("b","321"))
l: List[Student] = List(Student(a,123), Student(b,345), Student(a,678), Student(b,321))
scala> l.groupBy(_.name).values.toList
res0: List[List[Student]] = List(List(Student(b,345), Student(b,321)), List(Student(a,123), Student(a,678)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.