scala - 在可变 TreeSet 上调用 from/until/range 两次导致空序列

标签 scala

在使用可变 Scala TreeSet 时,我在同一组上多次调用 range/from/until 方法时遇到了一些奇怪的行为。以下代码块提炼了问题:

object MapTest extends App{
  override def main(args: Array[String]) {
    val mutableSet = scala.collection.mutable.TreeSet(3, 2, 5)
    println(mutableSet)
    println(mutableSet.from(2).from(3))
    println(mutableSet.until(5).until(3))
    println(mutableSet.range(2, 4).range(2, 4))
    println(mutableSet.from(2).until(4))

    val immutableSet = scala.collection.immutable.TreeSet(3, 2, 5)
    println(immutableSet)
    println(immutableSet.from(2).from(3))
    println(immutableSet.until(5).until(3))
    println(immutableSet.range(2, 4).range(2, 4))
    println(immutableSet.from(2).until(4))
  }
}

产生以下输出

TreeSet(2, 3, 5)
TreeSet()
TreeSet()
TreeSet()
TreeSet()

TreeSet(2, 3, 5)
TreeSet(3, 5)
TreeSet(2)
TreeSet(2, 3)
TreeSet(2, 3)

如您所见,不可变集的行为符合预期,允许多次调用 from、until 和 range。然而,在可变映射上,任何超出第一个的调用都会导致一个空列表。 (我还验证了对可变映射的 from、to 或 range 的单次调用是否正确)。

如果重要的话,我使用的是 scala 2.10.3

最佳答案

在我的电脑上尝试代码时,我得到以下输出:

TreeSet(2, 3, 5)
TreeSet(3, 5)
TreeSet(2)
TreeSet(2, 3)
TreeSet(2, 3)
TreeSet(2, 3, 5)
TreeSet(3, 5)
TreeSet(2)
TreeSet(2, 3)
TreeSet(2, 3)

所以我猜这是一个错误。我在 2.11.6 下运行它

关于scala - 在可变 TreeSet 上调用 from/until/range 两次导致空序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34429057/

相关文章:

scala - ClassNotFoundException Spark-提交 scala

scala - Spark dataframe groupby 多次

scala - sbt 编译失败,选项错误 : '-Ywarn-macros:after'

scala - 为什么persist()在Spark中被惰性求值

scala - 不在 Controller 的方法中使用 head on list

scala - Scala 错误 SI-7914 - 从 Scala 宏返回应用方法是否有任何解决方法?

scala - 如何将分组的 Spark RDD 内容展平为单独的行然后保存到文件

scala - Play 框架和 Slick 自动数据库创建

scala - 如何强制 Twitter 的 Scala Eval 阻止注入(inject)代码?我想限制 Eval 指定配置参数

scala - 为什么 IDEA 10 中的控制台会以 "tools is not a member of package scala"失败?