ループ内で呼び出されている List.remove(index) で、List.subList().clear() に置換できるものを報告します。

多くの要素を削除する場合、ほとんどの List の実装ではこの置換を行うほうが効率的です。

例:


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

クイックフィックス適用後:


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

このクイックフィックスは範囲チェックを自動的に追加し、最小値が最大値よりも大きい場合に IndexOutOfBoundsException が発生するのを阻止します。 そのような状況がコードで発生し得ない場合は、範囲チェックを除去できます。

2018.2 の新機能です