2014-09-25 7 views
-1

안녕하세요 저는 주소록을 만들고 모든 항목을 arrayList에 저장하려고합니다. 현재 목록에서 항목을 삭제하는 중에 문제가 있습니다. 누군가 나를 도울 수 있습니까? 여기 내 세터/getter와 생성자를 포함 내 ArrayList입니다ArrayList에서 항목을 제거하는 방법

List<AddressBook> addToList = new ArrayList<AddressBook>(); 

목록에서 항목을 제거하기위한이 내 코드 :

public class DeleteEntry { 
    Scanner scanner = new Scanner(System.in); 

    public void deleteEntry(List<AddressBook> addToList){ 
     System.out.println(" Please input name to delete: "); 
     String name = scanner.next(); 
     for (AddressBook item : addToList) { 
      if (name.equalsIgnoreCase(item.getName())){ 
       addToList.remove(item); 
       System.out.println("Item removed"); 
      }else { 
       System.out.println("name not found"); 
      } 
     } 
    } 

내가지고있어 오류가

Exception in thread "main" java.util.ConcurrentModificationException 
    at java.util.ArrayList$Itr.checkForComodification(Unknown Source) 
    at java.util.ArrayList$Itr.next(Unknown Source) 
    at addressbook.jedi.DeleteEntry.deleteEntry(DeleteEntry.java:12) 
    at addressbook.jedi.MainAddressBook.main(MainAddressBook.java:29) 

라인 12는

+0

반복기 사용 – subash

답변

0

사용 반복자와 대신 각 루프

for (Iterator<AddressBook> it = addToList.iterator(); it.hasNext();) { 
    AddressBoook item = it.next(); 
    if (name.equalsIgnoreCase(item.getName())){ 
     it.remove(); 
     System.out.println("Item removed"); 
    } else { 
     System.out.println("name not found"); 
    } 
} 

ArrayList의 반복자에 대한 내부의 제거를 호출() 메소드는, Iterator.remove를 호출에 대한 기존 컬렉션의 변화가 이루어 것을 의미 르파입니다 iterator를 얻은 후 다음 요소에 액세스 할 때 ConcurrentModificationException이 발생합니다. iterator.remove() 메서드는 해당 제한을 우회합니다.

관련 문제