如何检查列表是否包含所有相同的值?

时间:2017-01-05 05:53:53

标签: scala list apache-spark

我有List[<DataType>]作为输入。我想检查列表是否包含所有相同的值(不是数据类型)。

Scala中是否有内置方法或直观方式来执行此操作,而不是迭代列表和检查。

3 个答案:

答案 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