Существует ArrayList<Integer> al
, и я хочу скопировать первую половину ее элементов в другую ArrayList<Integer> firstHalf
. (Если al имеет нечетное число элементов, firstHalf
должен иметь еще один элемент.) Однако следующий код генерирует IndexOutOfBoundsException
и говорит Index: 0, Size: 0
, хотя я не уверен, как это будет проблемой, поскольку индексы ArrayLists начинаются на 0. Кроме того, я знаю .arraycopy
, но я хотел бы сделать это таким образом, с for-loops.Копирование первой половины ArrayList
int x = al.size()/2 + (al.size()%2) - 1;
for(int i = 0; i < x; i++){
firstHalf.set(i, al.get(i));
}
Рассмотрите возможность использования 'subList'. –
@SotiriosDelimanolis Обратите внимание: 'subList()' возвращает «представление» исходного списка, а не копию. Поэтому вам нужно что-то вроде 'firstHalf = new ArrayList (al.sLList (0, newSize));' – millimoose