保证数组处理的顺序.each()Groovy

时间:2013-02-27 23:14:30

标签: java groovy foreach

在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()循环的顺序吗?

Reference

1 个答案:

答案 0 :(得分:3)

订单保证是收集的顺序。

不要将基于闭包的循环与并发或并行性混淆。这只是单个线程中的简单迭代。关于地图的评论只是强调了Java地图没有保证订购。请注意,groovy默认使用LinkedHashMaps。那些有保证的顺序:按插入顺序。

另请注意,对于GPars,您可以使用上述不适用的并行集合。