gpt4 book ai didi

scala - Scala 会自动更改集合中数据的顺序吗?

转载 作者:行者123 更新时间:2023-12-05 08:38:32 25 4
gpt4 key购买 nike

我正在查看 scala 的集合示例,我注意到当创建 states3 时,编译器更改了该集合成员的顺序,怀俄明州排在第三位,现在是最后一位。有人可以解释为什么会这样吗?

scala> val states = Set("Alabama", "Alaska", "Wyoming")
states: scala.collection.immutable.Set[String] = Set(Alabama, Alaska, Wyoming)
scala> val states2 = states + "Virginia"
states2: scala.collection.immutable.Set[String] =
Set(Alabama, Alaska, Wyoming, Virginia)
scala> val states3 = states2 + ("New York", "Illinois")
states3: scala.collection.immutable.Set[String] =
Set(Alaska, Virginia, Alabama, New York, Illinois, Wyoming)

取自 Programming Scala 的例子:Scalability = Functional Programming + Objects by Dean Wampler

最佳答案

Set 仅保证同一元素不能插入两次(同样我们理解 true == 的结果/.equals.hashcode 比较匹配 .equals 来满足契约)。如果您的类型只是 Set,则无法保证顺序,这很可能意味着它将是 HashSet,它优化了内部结构以简化 .hashcode比较。

如果你想保留插入的顺序(假设相同的元素插入两次不会改变它第一次插入的顺序)那么使用 ListSet

如果您想根据一些Ordering 对元素进行排序,请使用SortedSet

关于scala - Scala 会自动更改集合中数据的顺序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62582367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com