Inspectopedia Help

'List.remove()' called in loop

Reports List.remove(index) called in a loop that can be replaced with List.subList().clear().

The replacement is more efficient for most List implementations when many elements are deleted.

Example:

void removeRange(List<String> list, int from, int to) { for (int i = from; i < to; i++) { list.remove(from); } }

After the quick-fix is applied:

void removeRange(List<String> list, int from, int to) { if (to > from) { list.subList(from, to).clear(); } }

The quick-fix adds a range check automatically to prevent a possible IndexOutOfBoundsException when the minimal value is bigger than the maximal value. It can be removed if such a situation is impossible in your code.

New in 2018.2

Inspection Details

Available in:

IntelliJ IDEA 2023.3, Qodana for JVM 2023.3

Plugin:

Java, 233.SNAPSHOT

Last modified: 13 July 2023