2013-10-29 8 views
1

를 해결하는 방법을 내가 먼저 다음 코드 라인 (720)은 루프의 두 번째 다음과 같은 오류 메시지가는 java.util.NoSuchElementException

java.util.ConcurrentModificationException 
java.util.ConcurrentModificationException 
     at java.util.HashMap$HashIterator.nextEntry(HashMap.java:894) 
     at java.util.HashMap$KeyIterator.next(HashMap.java:928) 
     at ca.on.oicr.pinery.lims.gsle.GsleClient.getOrders(GsleClient.java:720) 

했다.

주문의 요소를 반복하는 루프 내부에 주문에 추가 할 답변이 있는데, 그 원인이 예외입니다. 루프 내부에서 반복 할 컬렉션을 수정하지 마십시오. 샘플과 마찬가지로.

그래서 나는이 방법을 다시했지만 나는 다음과 같은 오류 메시지가 : 라인 (730)이 설정되어

java.util.NoSuchElementException 
java.util.NoSuchElementException 
    at java.util.ArrayList$Itr.next(ArrayList.java:794) 
    at ca.on.oicr.pinery.lims.gsle.GsleClient.getOrders(GsleClient.java:730) 

샘플 = 내 다음에 sampleOrderMap.get (it.next() getId().) 코드

이 오류 메시지는 어떻게 해결할 수 있습니까?이 새로운 메서드는 작동하지 않는 원래 메서드와 동일한 기능을 수행합니다. 이러한 모든 루프와 조건문을 사용하면 작동하지 않을 것입니다. 다음 코드의 fragment에서

+0

여기에 첫 번째 부분을 올리는 것의 의미는 무엇입니까? 대답은 무엇입니까? – Sage

+0

내 작업을 표시하고 싶습니다. 무엇을 피하려고 노력하고 있습니까? – user2811419

답변

1

: 당신은 연속적으로 iterator.next()의 각 호출을 반환하여 하나 개의 요소로 반복자의 발전에 따라 it.next() 호출

while (it.hasNext()) { 
if (sampleOrderMap.containsKey((it.next().getId()))) { // calling it.next() 
    if (it.next().getId() != null) { // again calling it.next() ? 
     Set<OrderSample> samples = sampleOrderMap.get(it.next().getId()); //again calling 
     for (OrderSample orderSample : samples) { 
      Set<Attribute> attributes = attributeOrderMap.get(orderSample.getId()); 

////............ your code 

. 나는 it.next()가 반환하는 것을 목적 확실하지 않다,하지만 당신은 컬렉션 타입의 객체에 할당하고 다음과 같이 while 루프 내에서 사용할 수 있지만 : 나는 it 있으리라 믿고있어

while (it.hasNext()) { 
    Order order = (Order)it.next(); // if Order is your list's type 
    if (sampleOrderMap.containsKey((order.getId()))) { 
     if (order.getId() != null) { 
      Set<OrderSample> samples = sampleOrderMap.get(order.getId()); 
      for (OrderSample orderSample : samples) { 
       Set<Attribute> attributes = attributeOrderMap.get(orderSample.getId()); 
+0

왜 내가 그 문제의 처리를 위해 그 아래쪽에 게시 한 새로운 방법을 만들었습니까? – user2811419

+0

@ user2811419, 답변을 업데이트했습니다. 한번 봐주세요 – Sage

2

Iterator입니다. (이것을 재현하는 데 필요한 전체 소스 코드를 게시하지 않았기 때문에 실제로 이것을 수행해야합니다.)

따라서 it.next()을 호출 할 때마다 반복기가 향상 될 것입니다. 처음 네 줄에 it.next() 번을 세 번 호출합니다. 따라서 Iterator에 항목이 하나만있는 경우 it.hasNext()에 대한 첫 번째 호출은 true를 반환하지만 항목이 부족한 경우에만 it.next()에 한 번 더 전화 할 수 있습니다.

while (it.hasNext()) { 
    OrderSample nextSample = it.next(); 
    // blah blah blah 
    // use nextSample instead of it.next() in each subsequence instance. 
} 
관련 문제