是否可以使用if(map.nonEmpty)代码字符串,将所有内容都放在一个字符串中?
def findEqSorted(arr:List[Elem]) = {
val map = arr.groupBy(_.suit).filter(_._2.size >= 5)
if(map.nonEmpty)
Some(map.head._2.sortWith(_.num > _.num).take(5))
else None
}
如果我这样做:
Option(arr.groupBy(_.suit).filter(_._2.size >= 5).head._2.sortWith(_.num > _.num).take(5))
如果filter(_._2.size >= 5)
返回nonEmpty Map,则一切正常,否则我会收到错误
Exception in thread "main" java.util.NoSuchElementException: next on empty iterator
答案 0 :(得分:3)
您正在执行filter
然后选择执行head
,您可以使用find
来缩小此选项,它会为您返回一个选项:
def findEqSorted(arr: List[Elem]) = {
arr.groupBy(_.suit).find(_._2.size >= 5).map {
_._2.sortWith(_.num > _.num).take(5)
}
}