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]
    ---------------------------------------------------------------------

Responder a