powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Модификация коллекции внутри foreach
11 сообщений из 11, страница 1 из 1
Модификация коллекции внутри foreach
    #34253012
crazytoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос такой -- можно ли модифицировать коллекцию, используемую в самом цикле foreach или стоит забить на преимущества 1.5 и по-старинке перебирать все обычным for? Вот код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 public  List<X> findOpenXList() {
	
	List<X> xList = XDao.getAll();
	
	 for  (X x : xList) {
	    
	     if  (!x.isOpen()) {
		xList.remove(x);
	    }
	}
	
	 return  xList;
    }
...
Рейтинг: 0 / 0
Модификация коллекции внутри foreach
    #34253016
crazytoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно я неясно описал проблему- в общем если использовать такой код -- то выскакивает ексепшн конкурентной модификации, можно как-то с этим бороться? может сталкивались с этим напишите код решения не важно на 1.5 или на 1.4
...
Рейтинг: 0 / 0
Модификация коллекции внутри foreach
    #34253022
crazytoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе проблему решил используя копию списка ведется перебор по исходной коллекции а удаляется из копии.потом исходная коллекция подменяется копией. А интересно можно как-нибудь без копии обойтись?
...
Рейтинг: 0 / 0
Модификация коллекции внутри foreach
    #34253035
Я всегда делал так (у меня 1.4):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Collection originalData = foo.getCollection();
Collection data =  new  ArrayList();
 for  (Iterator iter = originalData.iterator(); iter.hasNext(); ){
 CustomObj element = (CustomObj) iter.next();
  if  (element.isValid()){
  data.add(element);
 }
}
 return  data;
...
Рейтинг: 0 / 0
Модификация коллекции внутри foreach
    #34253044
crazytoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно. Спасибо за совет. Нужно попробовать
...
Рейтинг: 0 / 0
Модификация коллекции внутри foreach
    #34253072
z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
z
Гость
...
Рейтинг: 0 / 0
Модификация коллекции внутри foreach
    #34253104
crazytoo
Вот z вам привел ссылку, в которой объясняется (как и в любой книге), что модицифировать итерируемую коллекцию нельзя.
...
Рейтинг: 0 / 0
Модификация коллекции внутри foreach
    #34253105
Модифицировать в плане изменения количества элементов, разумеется.
...
Рейтинг: 0 / 0
Модификация коллекции внутри foreach
    #34253108
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
меня даже анрегом забанили :(( crazytoo
Вот z вам привел ссылку, в которой объясняется (как и в любой книге), что модицифировать итерируемую коллекцию нельзя.
Можно. Если пользоваться синтаксисом 1.4:
Код: plaintext
1.
2.
3.
4.
5.
6.
 for  (Iterator i = coll.iterator();i.hasNext();) {
    MyClass m = i.next();
     if  ((m.shallBeDeleted()) {
        i.remove();
    }
}
...
Рейтинг: 0 / 0
Модификация коллекции внутри foreach
    #34253115
Век живи, век учись...
...
Рейтинг: 0 / 0
Модификация коллекции внутри foreach
    #34253439
crazytoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо за советы. На самом деле это был не мой код- меня просто перекинули на JUnit тесты и изза этой конструкции все время вываливалось, так вот я и подумал правильно ли он написан - теперь все подправил и заработало
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Модификация коллекции внутри foreach
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]