1

在 groovy 中,我知道 Map 上的 .each() 循环不能保证处理内容的顺序。对象数组上的 .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() 循环的顺序吗?

参考

4

1 回答 1

3

顺序保证是集合的顺序。

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

另请注意,使用 GPars,您可以在上述不适用的情况下使用并行集合。

于 2013-02-27T23:28:36.117 回答