从 Java 列表转换为 Scala 可变缓冲区

Converting from Java List to Scala mutable Buffer

我在从 Scala 转换到 Java,然后再转换回 Scala 时遇到了一些问题。我正在尝试从 Scala 可变缓冲区转换为 Java 列表,然后在应用 Java 的漂亮洗牌功能后返回到 Scala 可变缓冲区。

我尝试使用 Scala 的 Random 库的洗牌函数(即使缓冲区被转换为 Scala 列表)但是它对我不起作用,因为缓冲区的类型是 "Card" 类型,它是一个对象类型我为我正在从事的项目设置的。有问题的代码如下所示:

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

在我使用的Scala IDE中,给我的错误是:

type mismatch; found : Unit required: java.util.List[?]

我不太确定该怎么做。任何帮助将不胜感激!

java.util.Collections.shuffle 将原地洗牌,而不是 return 新列表。 return 类型为空。尝试使用原始引用 list.

调用 asScalaBuffer

导致错误的行可能是这一行:

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

As 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)
}