Если ArrayList.removeRange()
соответствует тому, что вы пытаетесь сделать, вы можете обойти ограничение protected
, создав новый ArrayList
, который содержит первый и последний подсписки, исключая диапазон всередина.
Вот пример:
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list, "zero", "one", "two", "three", "four");
List<String> manipulatedList = new ArrayList<>(list.size());
int removeStartIndex = 2;
int removeEndIndex = 4;
List<String> firstSubList = list.subList(0, removeStartIndex);
manipulatedList.addAll(firstSubList);
List<String> lastSubList = list.subList(removeEndIndex, list.size());
manipulatedList.addAll(lastSubList);
System.out.println("list : " + list.toString());
System.out.println("manipulated : " + manipulatedList.toString());
Когда я запускаю это локально, это вывод - элементы «два» и «три» были удалены из списка манипуляций:
list : [zero, one, two, three, four]
manipulated : [zero, one, four]