Scala访问列表对象并对其进行评估

时间:2016-09-02 06:31:29

标签: java list scala

Scala访问列表对象并对其进行评估

我有清单

val example = List(ItemDesc(6164,6165,6166,6195,The values are correct), ItemDesc(14879,14879,14879,14894,The values are ok), ItemDesc(19682,19690,19682,19694,The values are good))

从示例列表中,我想访问对象'ItemDesc'。得到偶数和奇数。

例如,获取列表中的第一个对象

ItemDesc(6164,6165,6165,6195,值正确)

我想知道,

evenPlacesCount = 6164 + 6166

oddPlacesCount = 6165 + 6195

我有代码来评估它是否是普通列表(6164,6165,6166,6195,值是正确的。)

但是如果我有像上面的'example'这样的List对象怎么计算呢?

1 个答案:

答案 0 :(得分:1)

这样的东西?

case class ItemDesc(a: Int, b: Int, c: Int, d: Int, desc: String)
case class Pair(even: Int, odd: Int)

val example = List(
  ItemDesc(6164, 6165, 6166, 6195, "The values are correct"),
  ItemDesc(14879, 14879, 14879, 14894, "The values are ok"),
  ItemDesc(19682, 19690, 19682, 19694, "The values are good")
)

def evenOddCount(item: ItemDesc): Pair = Pair(item.a + item.c, item.b + item.d)
def addEvenOddCounts(first: Pair, second: Pair): Pair = Pair((first.even + second.even), (first.odd + second.odd))

val evenOddPair = evenOddCount(ItemDesc(6164, 6165, 6166, 6195, "The values are correct")) // Pair(12330,12360)
val allPairs = example.map(evenOddCount) // List(Pair(12330,12360), Pair(29758,29773), Pair(39364,39384))
val totalPair = example.map(evenOddCount).reduce(addEvenOddCounts) // Pair(81452,81517)