list.remove(index) calls inside an ascending counted loop.
This is suspicious as the list becomes
shorter after the removal, and the next element gets skipped. A simple fix is to decrease the index variable
after the removal,
but probably removing via an iterator or using the removeIf() method (Java 8 and later) is a more robust alternative.
If you don't expect that remove() will be called more than once in a loop, consider adding a break after it.
Example:
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));
}
}
The code looks like 1 2 3 4 is going to be printed, but in reality, 3 will be skipped in the output.
New in 2018.2