2013-10-12 7 views
2

이 메서드는 목록, 요소, 최소값 (최대 포함) 및 최대 값 (포함하지 않음)을 허용합니다. 그런 다음 동일한 요소가있는 범위 내의 모든 요소를 ​​제거합니다.범위가있는 목록에서 요소 제거

예를 들어 (0, 0, 2, 0, 4, 0, 6, 0, 8, 0, 10, 0, 12, 0, 14, 0, 16) 목록의 경우 removeInRange (list, 0, 5, 13)은 목록 (0, 0, 2, 0, 4, 6, 8, 10, 12, 0, 14, 0, 16)을 생성해야합니다.

너무 많이 제거하는 목록의 끝 부분에 문제가 있습니다. 어떤 제안?

private static void removeInRange(List<Integer> thing, int element, 
      int firstInclusive, int secondExclusive) { 

    int i = firstInclusive; 

    while (i >= firstInclusive && i < secondExclusive && i < thing.size()) { 
     if (thing.get(i)== element) { 
      thing.remove(i); 
     } else { 
      i++; 
     } 
    } 
} 
+0

을 할 수 있습니다. –

답변

2

당신은이 방법으로 당신은 반복자를 사용할 수도 있습니다

list.subList(fromIndex, toIndex).removeAll(Arrays.asList(element));