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++;
        }
    }
}
4

1 回答 1

2

你可以这样做

list.subList(fromIndex, toIndex).removeAll(Arrays.asList(element));
于 2013-10-12T03:33:19.320 回答