Scala - 从列表中删除重复项
我需要从列表中删除重复项。我创建了下面的代码,但它会引发错误。我在这里错过了什么?Scala - 从列表中删除重复项
object RemDupArray {
def duprmv(lst: List[Int]): List[Int] = { return lst.removeDuplicates }
def main(args: Array[String]) {
var xs = List(6, 2, 8, 5, 1, 1, 1)
println(xs)
println(duprmv(xs))
}
}
removeDuplicates
不是列表Scala中的一个成员,使用distinct
代替。
你的代码更改为:
object RemDupArray {
def duprmv(lst: List[Int]): List[Int] = lst.distinct
def main(args: Array[String]) {
var xs = List(6, 2, 8, 5, 1, 1, 1)
println(xs)
println(duprmv(xs))
}
}
我还要强调一点,在Scala中应避免使用'return'这个事实:) –
你正在寻找的方法是distinct
。
将return lst.removeDuplicates
替换为lst.distinct
。
谢谢!编辑答案。 – YunujD
'List.distinct'是否保留排序?如果不是这样,它可能是不合适的,其余的元素必须保持其最初的相对顺序。 – halversonp
我看到两个简单的解决方案:
- 使用List.distinct方法
- 改变你的列表中的一组,由定义有没有重复的元素(记住你将失去订单,如果这是有关)
代码:
def duprmv_1(lst: List[Int]): Set[Int] = lst.distinct
def duprmv_2(lst: List[Int]): Set[Int] = lst.toSet
谢谢大家......感谢您的帮助! –
考虑upvoting工作解决方案/答案,并选择一个正确的,如果你的问题已解决@RameshLakshman :) – pedrorijo91
'removeDuplicates'已被弃用,你做了什么错误?你能发布完整的代码和你得到的错误吗? –
向我们显示错误请 – pedrorijo91
改为使用Set [Int]。套件没有重复,也没有订单。 –