2013-10-12 143 views
2

此方法應接受列表,元素,最小值(含)和最大值(不含)。然後使用相同的元素刪除範圍內的所有元素。刪除範圍列表中的元素

例如,對於列表(0,0,2,0,4,0,6,0,8,0,10,0,12,0,14,0,16),調用removeInRange (列表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));