Scala 如何在一系列对象中找到最大值?

Scala 如何在一系列对象中找到最大值?,scala,Scala,我希望使用Scala方法zip和max从序列中查找具有max int值的对象。例如,我有一个具有嵌套对象的复杂对象 case class A(prop1: String, b: B, prop2:String) case class B(val:Int, prop1: String) Seq[A] 您可以在序列上使用maxBy。例如(轻轻编辑以便编译): 然后: scala> as.maxBy(_.b.value) res0: A = A(,B(10,),) maxBy的参数只是一个

我希望使用Scala方法zip和max从序列中查找具有max int值的对象。例如,我有一个具有嵌套对象的复杂对象

case class A(prop1: String, b: B, prop2:String)
case class B(val:Int, prop1: String)

Seq[A]

您可以在序列上使用
maxBy
。例如(轻轻编辑以便编译):

然后:

scala> as.maxBy(_.b.value)
res0: A = A(,B(10,),)
maxBy
的参数只是一个从
a
到编译器可以告诉如何排序的函数(更具体地说是任何具有
排序
实例的函数)。编译器知道如何比较整数,所以我们可以只使用
\uu.b.value
,这是类似
(a:a)=>a.b.value
的糖

您还可以为
A
提供一个
Ordering
实例,只需使用
max

scala> implicit val orderingA: Ordering[A] = Ordering.by(_.b.value)
orderingA: Ordering[A] = scala.math.Ordering$$anon$9@3341afc6

scala> as.max
res1: A = A(,B(10,),)

但是
maxBy
可能更适合一次性操作。

您可以在序列上使用
maxBy
。例如(轻轻编辑以便编译):

然后:

scala> as.maxBy(_.b.value)
res0: A = A(,B(10,),)
maxBy
的参数只是一个从
a
到编译器可以告诉如何排序的函数(更具体地说是任何具有
排序
实例的函数)。编译器知道如何比较整数,所以我们可以只使用
\uu.b.value
,这是类似
(a:a)=>a.b.value
的糖

您还可以为
A
提供一个
Ordering
实例,只需使用
max

scala> implicit val orderingA: Ordering[A] = Ordering.by(_.b.value)
orderingA: Ordering[A] = scala.math.Ordering$$anon$9@3341afc6

scala> as.max
res1: A = A(,B(10,),)
但是
maxBy
可能更适合一次性操作