我有List[<DataType>]
作为输入。我想检查列表是否包含所有相同的值(不是数据类型)。
Scala中是否有内置方法或直观方式来执行此操作,而不是迭代列表和检查。
答案 0 :(得分:14)
这将在第一个非等于元素上终止。元素类型必须支持==
或!=
等比较器。
lst.forall(_ == lst.head) // true if empty or all the same
lst.exists(_ != lst.head) // false if empty or all the same
答案 1 :(得分:1)
我只是为了一个不相关的问题而这样做,所以要稍微改进上述内容:lst.tail.forall(_ == lst.head)
。这可以避免检查列表的头部是否等于你自己,你已经知道它是真的。
答案 2 :(得分:0)
对于任何来到这里的人,假设问题标题与提出的实际问题相匹配,检查List中是否包含Scala中所有相同的值的最简单方法是
List(1, 2, 2, 1, 1).distinct.length == 1 // returns false
List(1, 1, 1, 1, 1).distinct.length == 1 // returns true
List().distinct.length == 1 // empty list returns false
请注意,它们必须属于同一类型
List(4, 4.0, "4").distinct.length == 1 // returns false