list.remove(index) の呼び出しを報告します。
このような呼び出しは疑わしいです。除去処理の後はリストが短くなり、次の要素がスキップされるためです。 このような場合、除去処理の後にインデックス変数を減算して修正するのが簡単ですが、イテレーターを介して除去するか、removeIf() メソッド (Java 8 以降) を使用して除去するのうがより確実だと思われます。
remove() がループ内で複数回呼び出されることを想定していない場合は、その後に break を追加することを検討してください。
例:
public static void main(String[] args) {
process(new ArrayList<>(
Arrays.asList("1", "2", "|", "3", "4")));
}
static void process(List<String> list) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).equals("|")) {
list.remove(i);
continue;
}
System.out.println(list.get(i));
}
}
1 2 3 4 のようなコードが出力されるように見えますが、実際には 3 は出力されません。
2018.2 の新機能です