2015-04-21 29 views
0

我有一些從Scala轉換爲Java,然後回到Scala的問題。我試圖從Scala可變緩衝區轉換爲Java List,然後在應用Java的漂亮混洗功能後返回到Scala可變緩衝區。從Java列表轉換爲Scala可變緩衝區

我試過使用Scala的隨機庫的混洗功能(即使當緩衝區轉換爲Scala列表時),但它不適用於我,因爲緩衝區類型是「Card」類型,它是一種對象類型,我有爲我正在開展的項目設立。有問題的代碼如下所示:

def shuffleDeck() { 
    val list: java.util.List[Card] = cards 
    val newList = java.util.Collections.shuffle(list) 
    asScalaBuffer(newList) 
} 
在斯卡拉IDE我用,給我的錯誤

是:

類型不匹配;找到:需要的單元:java.util.List [?]

我真的不知道該怎麼做。任何和所有的幫助將不勝感激!

回答

1

這是造成錯誤的代碼行可能是這一個:

val newList = java.util.Collections.shuffle(list) 

由於Collections.shuffle(..) (in java.util) has return type void - 傳入的列表將成爲洗牌,不創建一個新的列表。考慮到這一點,您的代碼應該是:

def shuffleDeck() { 
    val list: java.util.List[Card] = cards 
    java.util.Collections.shuffle(list) 
    asScalaBuffer(list) 
} 
+0

感謝您的建議!像魅力一樣工作。 – user3450827

0

java.util.Collections.shuffle將就地清洗列表,並且不返回新列表。返回類型是無效的。嘗試用原始參考list調用asScalaBuffer。

相關問題