안드로이드

java.util.concurrentmodificationexception arraylist

raulyo 2012. 3. 20. 15:41
아래 코드에서 에러 

import java.util.ArrayList;
import java.util.List;

public class TestAddRemoveList
{

    public static void main( String args[] )
    {
        List< String > list = new ArrayList< String >();
        list.add("A");
        list.add("B");
        
        for( String str : list )
        {
            if( str.equals( "B" ) )
            {
                list.remove( new String("B" ) );
            }
        }
    }
} 


첫번째 해결방법

import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

public class TestAddRemoveList
{

    public static void main( String args[] )
    {
        List< String > list = new CopyOnWriteArrayList< String >();
        list.add("A");
        list.add("B");
        
        for( String str : list )
        {
            if( str.equals( "B" ) )
            {
                list.remove( new String("B" ) );
            }
        }
    }
} 


두번째 해결방법

import
 java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class TestAddRemoveList
{

    public static void main( String args[] )
    {
        List< String > list = new ArrayList< String >();
        list.add("A");
        list.add("B");
        list.add("C");
        
        for( Iterator< String > it = list.iterator(); it.hasNext() ; )
        {
            String str = it.next();
            if( str.equals( "B" ) )
            {
                it.remove();
            }
        }
        
        for( String str : list )
        {
            System.out.println( str );
        }
    }
}