2014-05-22 3 views
-6
private List <Integer> nums; 

public void numQuest() 
{ 
    int k = 0; 
    Integer zero = new Integer(0); 
    while(k < nums.size()) 
    { 
     if(nums.get(k).equals(zero)) 
      nums.remove(k); 

     k++ 
    } 
} 

목록 nums를 포함 삭제 [0, 0, 4, 2, 5, 0, 3, 0]ArrayList의 방법을 다음 값

I는 numQuest 실행하고 nums [0, 2, 4, 5가되었다 , 3] 그러나 누군가 이유를 설명 할 수 있습니까?

저는 코드가 0을 모두 제거 했으므로 nums에 0이 여전히 남아 있다고 생각했습니다. ?????

+4

실행 코드와 알아? – leppie

+0

그냥 코드를 실행할 수 있습니다 .. 왜 여기에 물어보십시오? –

+0

글쎄, 실제로 정확한 답은 [0, 4, 2, 5, 3] 이었지만 모든 제로가 제거되어서는 안되는 이유는 모르겠다. – user3663395

답변

0

모든 0은 삭제되지 않습니다 (귀하의 의도 임).

첫 번째 반복 후 목록은 [0, 4, 2, 5, 0, 3, 0]이됩니다. 지금은 k=1입니다. 당신은 대신에 1

사용하여 반복자를 시도 = 인덱스에있는 요소 4에서보고됩니다

예 :

for (Iterator<String> iter = list.iterator(); iter.hasNext();) { 
    String s = iter.next(); 
    if (s.equals("to_remove")) { 
    iter.remove(); 
    } 
} 
+0

나는 그것을 지금 얻는다! 대단히 감사합니다 !!! – user3663395