以下是一些改编自在线Scala教程的代码:
object Test {
def main(args: Array[String]) {
val fruit1 = List("apples", "oranges", "pears")
val fruit2 = List("mangoes", "banana")
val veg1 = Set("potatoes", "carrots", "peas")
val veg2 = Set("cabbage", "squash")
var fruit = fruit1 ++ fruit2
println( "fruit1 ++ fruit2 : " + fruit )
var vegetable = veg1 ++ veg2
println( "veg1 ++ veg2 : " + vegetable )
}
}
Run Code Online (Sandbox Code Playgroud)
以下是结果:
fruit1 ++ fruit2:列表(苹果,橘子,梨,芒果,香蕉)
veg1 ++ veg2:套装(卷心菜,豌豆,南瓜,胡萝卜,土豆)
List连接按照我的预期工作,但我永远不会预测Set连接的结果顺序.任何人都可以解释结果是如何得出的?这里的在线教程没什么帮助.
scala.collection.Set 没有提供任何关于遍历顺序的保证 - 如果你要求一个字符串表示一个,你得到的顺序是未指定的,取决于实现.
某些子类scala.collection.Set 确实提供了关于顺序的保证 - 例如,在迭代通过a时看到的顺序collection.immutable.SortedSet取决于Ordering您用于构造集合的实例,并将collection.mutable.LinkedHashSet按插入顺序迭代其元素.当你正在使用任意的Set,但是,你应该永远,永远,靠的顺序,你碰巧使用的时候看到toString,foreach等等.
| 归档时间: |
|
| 查看次数: |
269 次 |
| 最近记录: |