最近在看Java的集合类的源码,发现他的toArray的实现是这样的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;
    }就是创建一个与Collection一样大的数组,利用迭代器往数组当中填值,我感到疑惑的是那两个判断,到底什么时候会发生循环内it.hasNext()为false或循环外it.hasNext()为true的情况呢?为什么迭代器会和数组本身的元素不一样多呢?
请举个栗子告诉我,有代码演示就更好了,谢谢大家了