2017-05-15 348 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