将列表转换为 Scala 中的集合

Bil*_*orj 3 scala

我需要按顺序将列表转换为设置。但是我得到了不合时宜的集合。

def toset(list: List[Int]): Int = {
    var newset = Set.empty[Int]
    for (i <- list){
      newset += i
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,如果我做list = List[Int] (4,6,2,1,7)and toset(list),我会得到newset = Set(1,6,2,7,4)而不是newset = Set (4,6,2,1,7)

tex*_*uce 5

您可以使用LinkedHashSet。它是有序的(未排序的)与插入顺序相关的集合类型。

同样在 Scala 中,您不需要传统的 for 循环来在集合类型之间进行转换。您可以使用以下to(Factory)方法:

val list = List(4,6,2,1,7)
list.to(collection.mutable.LinkedHashSet)
//Returns LinkedHashSet(4,6,2,1,7)
Run Code Online (Sandbox Code Playgroud)

从技术上讲immutable.ListSet,您也可以使用,但目前证明它效率低下(请参阅此处