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