有这个奇怪的代码AbstractCollection
:
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;
}
“准备好看到更多或更少的元素”部分是恕我直言,纯粹是胡说八道:
- 如果集合同时发生变化,迭代器
ConcurrentModification
无论如何都会抛出异常。 - 我还没有找到任何支持这个的非并发子类,尤其是
- 在调整大小的情况下,可以(由于可见性问题)复制一堆s 而不是数据的
ArrayList
用途,Arrays.copyOf(elementData, size)
null
- 如果你足够幸运的
LinkedList
话。ArrayIndexOutOfBoundsException
- 在调整大小的情况下,可以(由于可见性问题)复制一堆s 而不是数据的
我忽略了什么吗?
您会在您的收藏中支持此功能(用于一般用途)吗?