ALgu�m poderia me explicar porque ocorre o erro de "modifica��o
concorrente" no programa abaixo?
Uso o Fort� (mas no S.O. deu a mesma coisa) com jdk 1.3.
O programa � um exerc�cio do "Thinking in Java 2"
////////////////////// Exerc�cio //////////////////////////////////
"19. Create a class, then make an initialized array of objects of your
class. Fill a List from your array. Create a subset of your List
using subList( ), and then remove this subset from your List
using removeAll( )."
////////////////////// Programa Ex19_EncheCacho.java ////////////////
import java.util.*;
class banana {
int b;
banana ( int num ) { b = num; }
public String toString() { return "banana(" + b + ")"; }
}
public class Ex19_EncheCacho {
public static void main ( String args[] ) {
banana[] cacho = new banana[10];
for (int i=0; i<10 ; i++) cacho[i] = new banana(i);
System.out.println("\ncacho (como array):\n" + cacho);
/* List lcacho = Arrays.asList(cacho);
Assim n�o funciona pois causa uma
"UnsupportedOperationException".
acho que mostrar isso � o objetivo do exerc�cio
(alguns m�todos n�o s�o implementados, como
exclus�o quando a lista est� baseada em um array).
For�ando com ArrayList (exerc�cio quer List)
s� pra ir at� o final. */
List lcacho = new ArrayList();
for (int i=0; i<cacho.length; i++) lcacho.add(cacho[i]);
System.out.println("\ncacho (como lista):\n" + lcacho);
List lsubcacho = lcacho.subList(3, 6);
System.out.println("\ncacho (como sublista):\n" + lsubcacho);
lcacho.removeAll(lsubcacho);
System.out.println("\ncacho (excluindo subcacho):\n" + lcacho);
}
}
///////////////////////////// Erro / Exce��o /////////////////
cacho (como array):
[Lbanana;@1bd03e
cacho (como lista):
[banana(0), banana(1), banana(2), banana(3), banana(4), banana(5),
banana(6), banana(7), banana(8), banana(9)]
cacho (como sublista):
[banana(3), banana(4), banana(5)]
java.util.ConcurrentModificationException
at java.util.SubList.checkForComodification(AbstractList.java:845)
at java.util.SubList.listIterator(AbstractList.java:775)
at java.util.AbstractList.listIterator(AbstractList.java:345)
at java.util.SubList.iterator(AbstractList.java:771)
at java.util.AbstractCollection.contains(AbstractCollection.java:92)
at java.util.AbstractCollection.removeAll(AbstractCollection.java:350)
at Ex19_EncheCacho.main(Ex19_EncheCacho.java:26)
Exception in thread "main"
--------------------------- LISTA SOUJAVA ---------------------------
http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP
[d�vidas mais comuns: http://www.soujava.org.br/faq.htm]
[para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
[regras da lista: http://www.soujava.org.br/regras.htm]
---------------------------------------------------------------------