作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个未排序的列表,想知道其中的所有项目是否都是唯一的。
我天真的方法是
val l = List(1,2,3,4,3)
def isUniqueList(l: List[Int]) = (new HashSet()++l).size == l.size
l==l.distinct
,
l.size==l.distinct.size
和 Alexey 的基于 HashSet 的解决方案。
最佳答案
这是我能想到的最快的纯函数式解决方案:
def isUniqueList(l: List[T]) = isUniqueList1(l, new HashSet[T])
@tailrec
def isUniqueList1(l: List[T], s: Set[T]) = l match {
case Nil => true
case (h :: t) => if (s(h)) false else isUniqueList1(t, s + h)
}
distinct
实现):
def isUniqueList(l: List[T]): Boolean = {
val seen = mutable.HashSet[A]()
for (x <- this) {
if (seen(x)) {
return false
}
else {
seen += x
}
}
true
}
def isUniqueList(l: List[T]) = l.toSet.size == l.size
关于language-agnostic - 函数式编程 : Does a list only contain unique items?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3871491/
我是一名优秀的程序员,十分优秀!