Одно из условий по дублированию слова у меня было такое, это правильный вариант:
if (str.contains("л") && !str.contains("р")) {
                    i++;
                    list.add(i, str); //+1
                    }
Но изначально я использовал такой вариант, с префиксом, именно для того, что бы индекс уже присвоился в момент вычисления.
list.add(++i, str); //+0 ?????
Это не работало, когда прогнал в отладчике, то увидел, что именно в таком варианте нет разницы, что i++, что ++i отладчик показывает старое значение до присвоения. Как итог, не в тот индекс дублировалось слово. Притом эксперимент с выводом в консоль, дает ожидаемый результат.
int i=0;
        System.out.println(++i); //1
Кто объяснит?