我有一些问题从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 [?]
我不确定该怎么做。任何和所有的帮助将不胜感激!
答案 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。