是否可以在 foreach 内部循环中修改原始集合?

Is it possible to modify the original collection in foreach inside loop?

我想模仿这个:

for (int i = 0; i < items.getTotal(); i++) {
   // ....
   items = // new items get assigned.
}

foreach组件可以吗?

我认为你最好使用一个集合拆分器和一个集合聚合器来修改原始有效负载。

<collection-splitter />

<set-payload value="do something" />

<collection-aggregator /> 

或者,如果您必须使用 foreach,您可以使用 flowVar 来跟踪项目并在 foreach 之后将负载设置为 flowVar:

<set-variable variableName="items" value="#[[]]" />

<foreach>
  <set-payload value="do something" />
  <expression-component>flowVars.items.add(payload)</expression-component>
</foreach>

<set-payload value="#[flowVars.items]" />

解决方法:
在 foreach 之外:

  • 设置会话变量X为链表的内容 你想循环。

  • 我所有的 MS JDBC 4.1 存储过程调用 return 1-n hashmaps with key=resultSetx and value of a linkedlist.链表中的每个事件都是另一个包含 1 行的结果集对 (key=value) 的 hashmap - 所以我们 运行 经常这样做。

在 foreach 顶层:

  • 将负载集合引用设置为包含以下内容的负载 链表。
    温馨提示:(默认计数器flowVar开始 在 1。链表偏移量从 0 开始。)

foreach 内部:

  • 设置另一个变量(ctr-1)等于counter - 1;如果你不这样做 可以用那些计数器 -1 制作一些丑陋和困难的 MEL 参考)。
  • 将您的列表插入指向会话变量 X 链表。

foreach 完成后:
- 不要忘记删除它浪费的冗余列表 space。

干杯-MPC:-)