public Object[] toArray() {
// Estimate size of array; be prepared to see more or fewer elements
Object[] r = new Object[size()];
Iterator<E> it = iterator();
for (int i = 0; i < r.length; i++) {
if (! it.hasNext()) // fewer elements than expected
return Arrays.copyOf(r, i);
r[i] = it.next();
}
return it.hasNext() ? finishToArray(r, it) : r;
}
здесь код реализации метода AbstractCollection.toArray
.
if (! it.hasNext()) // fewer elements than expected
return Arrays.copyOf(r, i);
Я не понимаю использование вышеприведенного кода. Я подозреваю, что код используется, чтобы избежать изменения размера во время вызова метода. Поэтому у меня есть два вопроса:
- Что я подозреваю, правильно или неправильно? если это неправильно, что такое использование этого кода?
- Если это правда, какая ситуация может изменить размер при вызове метода?