scala - 如何从 Scala 的列表中获取任意属性的最大值?

标签 scala

假设我有一个看起来像这样的类:

class Foo(Prop1:Int, Prop2:Int, Prop3:Int)
{
 ..
}

我想创建一个函数,从 Foo 列表中获取某些任意属性的最大值。 s。

像这样:
def getMax(Foos:List[Foo], Property:??) = Foos.map(_.Property).sort(_ > _).head

如果我调用 getMax(myFooList, Prop1) ,它将返回最高值 Prop1来自此列表 Foo s。

我的问题是,我怎样才能做到这一点?我想我可以为 Property 创建某种枚举(scala 等效项)并做一个 match然后运行 ​​map在适当的属性上,但这似乎是很多工作 - 我每次都必须扩展我的枚举和函数 Foo被重构。

另外,不是那么重要,但是有没有比我所做的更好的方法来获取列表的最大值?

最佳答案

您应该使用标准 maxBy 方法:

List(("a", 2), ("b", 3), ("c", 4)).maxBy(_._2)
=> (String, Int) = (c,4)

关于scala - 如何从 Scala 的列表中获取任意属性的最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1446214/

相关文章:

python - 如何在 Pyspark 中使用 Scala 类

scala - 为什么方差注释会导致 Scala 无法推断出这种子类型关系?

scala - 如何在 Scala Spark 中将稀疏向量转换为密集向量?

scala - 加密变量的流畅匹配

scala - 是否可以使用延续使foldRight尾递归?

java - 处理模板中的重复值

java - Scala:SBT 为每个阶段捆绑不同的库依赖项

scala - 如何使用特征 scala.Proxy

scala - 如何将 WebJars 添加到我的 Play 应用程序?

scala - 在 Scala 中处理两个选项