在groovy中我知道Map上的.each()循环具有处理内容时的顺序no guarantee。 objs数组上的.each()怎么样?我的想法是阵列上的.each()每次都能安全地给我预定的顺序,但是前几天与朋友交谈,他说他不认为订单会得到保证。例如:
MyObj[] x = [ obj1, obj2, obj3 ];
x.each(){ obj ->
//what order will my objs come in?
}
另外,怎么样:
x.eachWithIndex() { obj, i ->
println(i); //what order will they come in?
}
我可以保证我的.each()或.eachWithIndex()循环的顺序吗?
答案 0 :(得分:3)
订单保证是收集的顺序。
不要将基于闭包的循环与并发或并行性混淆。这只是单个线程中的简单迭代。关于地图的评论只是强调了Java地图没有保证订购。请注意,groovy默认使用LinkedHashMaps。那些做有保证的顺序:按插入顺序。
另请注意,对于GPars,您可以使用上述不适用的并行集合。