eachWithIndex 循环不稳定

eachWithIndex loop is unstable

我有如下代码

           Map data = result?.data as Map
           data.eachWithIndex { dataItem, idx ->
                if (dataItem) {log.info dataItem}}

我这里的问题是 data.eachWithIndex { dataItem, idx -> 的代码部分。这有时工作得很好,有时会抛出以下错误

2018-10-15 10:07:31,569 [quartzScheduler_Worker-1] ERROR listeners.ExceptionPrinterJobListener - Exception occurred in job: Grails Job Message: groovy.lang.MissingMethodException: No signature of method: java.util.ArrayList.entrySet() is applicable for argument types: () values: [] Possible solutions: toSet(), toSet(), intersect(java.lang.Iterable), intersect(java.lang.Iterable), intersect(java.util.Collection), every()

我已经检查过,在所有情况下,data 始终具有相同的值,而且它永远不会为空。

请指教这里可能是什么问题?

result?.data是list的实例(看数据class经过"as Map"运算变成ArrayList1_groovyProxy... ) 您可以遍历列表(并根据需要构建地图):

Map data = [:]
result?.data?.eachWithIndex { dataItem, idx ->
   if (dataItem) {
      log.info dataItem
      data[idx] = dataItem
   }
}

如果这种情况时有发生 - 可能您的 result?.data 有时以 List 的形式出现,有时以 Map

的形式出现