Чтобы сделать то, что вы хотите сделать, внесите отмеченные изменения.
List<String> list = ArrayList<>(List.of("ABC","DEF", "GHI", "XYZ", "JKL", "MNO"));
public static void doAction(List<String> list) {
for (ListIterator<String> iterator = list.listIterator(); iterator.hasNext(); ) {
String s1 = iterator.next();
if(s1.equals("XYZ")){
while(iterator.hasNext()) {
iterator.next();
iterator.remove();
}
list.add("123");
list.add("456");
list.add("789");
break; // add this
// list.forEach(iterator::add); // delete this
}
}
}
Он напечатает.
[AB C, DEF, GHI, XYZ, 123, 456, 789]
Но я считаю, что более чистый способ сделать это был бы.
List<String> list = ArrayList<>(List.of("ABC","DEF", "GHI", "XYZ", "JKL", "MNO"));
public static void doAction(List<String> list) {
ListIterator<String> it = list.listIterator();
while (it.hasNext()) {
if (it.next().equals("XYZ")) {
while (it.hasNext()) {
it.next();
it.remove();
}
}
}
list.add("123");
list.add("456");
list.add("789");
}