2015-08-10 2 views
0

Я хочу подражать этим:Возможно ли изменить оригинальную коллекцию в петле foreach?

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

Можно ли с foreach компонентом?

+1

Я не думаю, что 'foreach' будет работать. По моему мнению, 'foreach' использует итератор, поэтому изменение содержимого списка вызовет исключение ... Было бы сложно реализовать то, что вы хотите, но вы можете попробовать иметь частный поток, который имеет компонент выбора в конце, один condition/path вызывает себя (цикл), а иначе путь просто выходит (концы цикла). Затем просто добавьте необходимую инициализацию индекса, индексный инкремент и измените список внутри. –

ответ

1

Думаю, вам лучше использовать сборщик-сплиттер и сборщик-агрегатор, который изменит исходную полезную нагрузку.

<collection-splitter /> 

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

<collection-aggregator /> 

В качестве альтернативы, если вы должны использовать Еогеасп, вы могли бы использовать flowVar, чтобы следить за деталями и множество полезной нагрузки к 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]" /> 
0

обходной путь:
Вне Еогеасп:

  • Установить переменную сессии X на содержание LinkedList, через который вы хотите петли.

  • Все вызовы хранимой процедуры MS JDBC 4.1 возвращают 1-n хэш-карты с ключом = resultSetx и значением связанного списка. Каждое вхождение в связанном списке - это еще один хэш-файл, содержащий пар с набором результатов 1 строки (ключ = значение), поэтому мы сталкиваемся с этим много.

На верхнем уровне Еогеаспа:

  • Установите опорный сбор полезной нагрузки к полезной нагрузке, которая содержит LinkedList.
    Напоминание: (Счетчик по умолчанию flowVar начинает на 1. LinkedList зачеты начинаются с 0.)

Внутри Еогеасп:

  • Установите другую переменную (СУУ-1) равно противодействию - 1; если вы этого не сделаете, может сделать некоторые уродливые и сложные MEL с этими счетчиками -1 ссылок).
  • Укажите ваш список вставляет в переменной сессии X LinkedList

После завершения Еогеаспа:
- Не забудьте удалить избыточный список его отходы пространства..

Ура-MPC :-)

+0

, так как вы можете убедиться, что он итерации до конца связанного списка, если длина его во время итерации увеличивается? – BPm