Есть код: public class Solution { public static void main(String[] args) { ArrayList<String> strings = new ArrayList<String>(); strings.add("роза"); strings.add("лоза"); strings.add("лира"); strings = fix(strings); for (String string : strings) { System.out.println(string); } } public static ArrayList<String> fix(ArrayList<String> strings) { for (int i = 0; i < strings.size() ; i++) { if(strings.get(i).contains("р") && strings.get(i).contains("л")) { } else if (strings.get(i).contains("р")) { strings.remove(i); i--; } else if (strings.get(i).contains("л")) { strings.add(strings.get(i)); i++; } } Вывод будет: лоза лира лоза лоза Почему так? И почему, если сделать strings.add(i, strings.get(i)); то вывод становится лоза лоза лира