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

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

Войти через центр авторизации
Похожие вопросы