如何在scala中添加list的值

时间:2015-08-11 11:22:14

标签: scala

例如列表是:

case class User(s: String, value: Int)
case class Name(i: Int, users: List[User])

List(Name(1, List(User("A", 1000), User("B", 500))), Name(2, List(User("A", 800),   User("B", 420))))

然后如何使用scala获取输出:  (想要添加值:例如:1000 + 500和800 + 420)

如何按值按顺序获得结果。

2 个答案:

答案 0 :(得分:2)

假设你定义了这样的类:

case class User(s: String, value: Int)
case class Name(i: Int, users: List[User])

val list = List(Name(1, List(User("A", 1000), User("B", 500))), Name(2, List(User("A", 800), User("B", 420))))

val result = list.map(_.users.map(_.value).sum)
println(result)

你会得到:

List(1500, 1220)

答案 1 :(得分:1)

您可以使用

解决问题
case class Name(number: Int, users: List[User])
case class User(name: String, number: Int)

val list = List(Name(1, List(User("A", 1000), User("B", 500))), Name(2, List(User("A", 800), User("B", 420))))

val result = list.map{
  name =>
    val sum = name.users.map {
      _.number
    }.sum
    (name.number, sum)
}

println(result) // List((1,1500), (2,1220))