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);
Я не понимаю использование кода выше. Я подозреваю, что код используется, чтобы избежать изменения размера при вызове метода. Итак, у меня есть два вопроса:
- Что я подозреваю, правильно или неправильно? если это не так, то как используется этот код?
- Если это правда, то какая ситуация может привести к изменению размера при вызове метода?