После долгой отладки, вот решение.
Функция подсписка проходит по ссылке, а не по значению, подсписок, созданный вызовом ArrayList.subList, сохраняет ссылку на исходный список и обращается к его массиву elementData.напрямую.
По этой причине при добавлении элемента в список «три» мы изменяем состояние исходного списка.это происходит здесь:
three.add ("Y" + (count ++));
Способ исправить это для этого конкретного случая - создать и инициализировать«три» перечисляют следующим образом:
String one = l.get(0);
String two = l.get(1);
List<String> three = new ArrayList<>();
three.add(one);
three.add(two);
three.add("Y" + (count));
Это позволяет нам манипулировать нашими списками без получения исключений параллелизма (ConcurrentModificationException).Однако, если вы манипулируете большими списками, я бы предложил вам использовать другой менее жесткий код для создания списков.
Я отмечу эту ветку как ответившую и надеюсь, что она поможет людям.