@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;
}
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Копируют не сам массив, а ссылку на него. Делают это потому, что другие методы могут эту ссылку изменять.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽