2017-05-15 69 views
1

我需要从列表中删除重复项。我创建了下面的代码,但它会引发错误。我在这里错过了什么?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)) 
    } 
} 
+0

'removeDuplicates'已被弃用,你做了什么错误?你能发布完整的代码和你得到的错误吗? –

+0

向我们显示错误请 – pedrorijo91

+0

改为使用Set [Int]。套件没有重复,也没有订单。 –

回答

3

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)) 
    } 
} 
+1

我还要强调一点,在Scala中应避免使用'return'这个事实:) –

3

你正在寻找的方法是distinct

return lst.removeDuplicates替换为lst.distinct

+0

谢谢!编辑答案。 – YunujD

+0

'List.distinct'是否保留排序?如果不是这样,它可能是不合适的,其余的元素必须保持其最初的相对顺序。 – halversonp

0

我看到两个简单的解决方案:

  1. 使用List.distinct方法
  2. 改变你的列表中的一组,由定义有没有重复的元素(记住你将失去订单,如果这是有关)

代码:

def duprmv_1(lst: List[Int]): Set[Int] = lst.distinct 

def duprmv_2(lst: List[Int]): Set[Int] = lst.toSet 
+1

谢谢大家......感谢您的帮助! –

+0

考虑upvoting工作解决方案/答案,并选择一个正确的,如果你的问题已解决@RameshLakshman :) – pedrorijo91