我想知道List
是否是同质的。
这是我的代码:
def isHomogeneous(ls: List[Any]) = ls.map(_.getClass).toSet.size == 1
有更好的方法吗?
答案 0 :(得分:6)
def allEqual(xs: Traversable[_]) =
xs.headOption.forall(head => xs.forall(_ == head))
def isHomogeneous(xs: Traversable[_]) =
allEqual(xs.view.map(_.getClass))
getClass
商家与遍历分开。Traversable
而非List
。Nil
。答案 1 :(得分:1)
怎么样
def isHomogeneous(l: List[Any]) = {
val t = l(0).getClass
l.forall(_.getClass == t)
}
因此,如果所有元素都与第一个元素具有相同的类型,则返回true
编辑:为了扩展我认为这个解决方案更好的原因: