要在Scala中设置的Convertin列表

要在Scala中设置的Convertin列表,scala,Scala,我需要将列表按顺序转换为set。但我得到的设置是不正常的 def toset(list: List[Int]): Int = { var newset = Set.empty[Int] for (i <- list){ newset += i } } def-toset(list:list[Int]):Int={ var newset=Set.empty[Int] 对于(iSet),按定义是无序集合 如果需要排序的集合,则需要使用排序集类,但它将根据元

我需要将列表按顺序转换为set。但我得到的设置是不正常的

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

对于(iSet),按定义是无序集合

如果需要排序的
集合
,则需要使用
排序集
类,但它将根据元素类型通过隐式排序函数对元素进行排序。它不会保持原始列表顺序

    val list = List[Int] (4,6,2,1,7)
    list: List[Int] = List(4, 6, 2, 1, 7)
    
    collection.SortedSet(list:_ *)
    res2: scala.collection.SortedSet[Int] = TreeSet(1, 2, 4, 6, 7)
您可以使用。它是与插入顺序相关的有序(未排序)集合类型

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

val list = List(4,6,2,1,7)
list.to(collection.mutable.LinkedHashSet)
//Returns LinkedHashSet(4,6,2,1,7)

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

集合是无序的,因此您的代码是正确的,只是不必要。您可以只列出。根据定义,toSet
Set
s是无序集合。您不能对它们进行排序,但如果您使用
SortedSet
,则可以按照排序方式对它们进行排序。如果顺序对您很重要,
list
s和其他<代码>序号s是正确的类型。