usedElements
リストが昇順であることがわかっている場合、最も簡単な方法は要素を逆の順序で削除することです。これにより、「シャッフルアップ」効果が後の操作に影響しなくなります。
List<Double> elements = ...;
List<Integer> usedElements = ...;
for (int i = usedElements.size() - 1; i >= 0; i--) {
elements.remove(usedElements.get(i));
}
usedElements
が現在ソートされていない場合は、最初にソートすることをお勧めします。usedElements
が現在ソートされておらず、別の理由で現在の順序を維持する必要がある場合は、最初にコピーを作成し、それをソートします。
List<Double> elements = ...;
List<Integer> usedElements = ...;
List<Integer> sortedUsedElements = new ArrayList<Integer>(usedElements);
Collections.sort(sortedUsedElements);
for (int i = sortedUsedElements.size() - 1; i >= 0; i--) {
elements.remove(sortedUsedElements.get(i));
}
または、コピーを逆順に並べ替えて、拡張された for ループを使用することもできます。
List<Double> elements = ...;
List<Integer> usedElements = ...;
List<Integer> sortedUsedElements = new ArrayList<Integer>(usedElements);
Collections.sort(sortedUsedElements, Collections.<Integer>reverseOrder());
for (Integer index : sortedUsedElements) {
elements.remove(index);
}