scala - 在 Scala 中将列表转换为集合

标签 scala

我需要按顺序将列表转换为集合。但我得到的是不按顺序排列的集合。

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

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

最佳答案

您可以使用 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)

从技术上讲,您也可以使用 immutable.ListSet,但目前证明它效率低下(参见 here)

关于scala - 在 Scala 中将列表转换为集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63619474/

相关文章:

java - 打印 ResultSet 中的数据以及列名

scala - 如何使用 Circe 删除对象列表中的空值

scala - TailRec 和 State monad 的组成

scala - 在没有显式匹配的情况下确定具体类型

java.lang.Long 和 scala.Long

scala - 应该如何创建一个可能抛出异常的 akka actor?

scala - 学习mapreduce,SQL命令如何翻译成mapreduce数据流。字数统计示例不能满足我的理解。

scala - Spark数据框似乎被重新计算了两次

html - Play 框架中如何使用 IF 语句让 CSS 仅用于一页

scala - 我将如何在 Scala 中表示复合键?