从Java List转换为Scala可变缓冲区

时间:2015-04-21 05:10:50

标签: java scala scala-collections

我有一些问题从Scala转换为Java,然后再转换为Scala。我尝试将Scala可变缓冲区转换为Java List,然后在应用Java的漂亮的混洗功能后再转换回Scala可变缓冲区。

我尝试使用Scala的Random库的shuffling函数(即使将缓冲区转换为Scala列表)但是它对我不起作用,因为缓冲区的类型是类型的"卡"这是我为我正在处理的项目设置的Object类型。有问题的代码如下所示:

def shuffleDeck() {
  val list: java.util.List[Card] = cards
  val newList = java.util.Collections.shuffle(list)
  asScalaBuffer(newList)
}
在我使用的Scala IDE中,给出的错误是:

  

类型不匹配; found:需要的单位:java.util.List [?]

我不确定该怎么做。任何和所有的帮助将不胜感激!

2 个答案:

答案 0 :(得分: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)
}

答案 1 :(得分:0)

java.util.Collections.shuffle将在适当位置对列表进行洗牌,并且不会返回新列表。返回类型无效。尝试使用原始引用list调用asScalaBuffer。