首页 文章

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

提问于
浏览
0

我有一些问题从Scala转换为Java,然后再转换为Scala . 我正在尝试从Scala可变缓冲区转换为Java List,然后在应用Java的漂亮的shuffling函数后返回到Scala可变缓冲区 .

我尝试使用Scala的Random库的shuffling函数(即使缓冲区被转换为Scala列表)但是它对我不起作用,因为缓冲区的类型是“Card”类型,它是我为之设置的Object类型我正在研究的项目 . 有问题的代码如下所示:

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

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

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

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

2 回答

  • 0

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

    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

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

相关问题