Задать вопрос
@Ezekiel4
Охотник на пиратов и сборщик монолитов

Почему для перебора массива объектов его копируют?

Ковыряю java src, в классе ArrayList наткнулся на код ниже (elementData - это transient Object[]). В нём перед перебором массив копируют в новую переменную. Зачем так сделали, если можно перебирать изначальный массив?

public int indexOf(Object o) {	
	return indexOfRange(o, 0, size);
}

int indexOfRange(Object o, int start, int end) {
	Object[] es = elementData;
	if (o == null) {
		for (int i = start; i < end; i++) {
			if (es[i] == null) {
				return i;
			}
		}
	} else {
		for (int i = start; i < end; i++) {
			if (o.equals(es[i])) {
				return i;
			}
		}
	}
	return -1;
}
  • Вопрос задан
  • 70 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Копируют не сам массив, а ссылку на него. Делают это потому, что другие методы могут эту ссылку изменять.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы