在Java中增强了for循环和迭代器

时间:2015-08-11 11:09:03

标签: java for-loop iterator

我有一个实现Iterable接口的MyList类。这是我的一个班级的toString()方法:

public String toString() {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < 4; i++) {
        // First example using iterator
        for (Iterator<Integer> itr = array[i].iterator(); itr.hasNext();) {
            sb.append(itr.next() + " ");
        }
        // And the same result using enhanced for loop
        for (int val : array[i]) {
            sb.append(val + " ");
        }
    }
    return sb.toString();
}

此循环遍历列表中的节点:

for (int val : array[i]) {
    sb.append(val + " ");
}

这个for循环如何使用迭代器?

2 个答案:

答案 0 :(得分:1)

增强的for循环适用于任何实现git gc git repack -Ad git prune 的类。它在内部调用该类实现的Iterable方法以获取iterator(),并使用Iterator的{​​{1}}和hasNext()方法迭代元素next()

答案 1 :(得分:1)

因为您的班级(MyList)实施了Iterable。因此,在内部,它会调用您的iterator()方法,然后使用ListIterator的hasNext()next()方法,它将在for循环中进行迭代。

参考:Using Enhanced For-Loops with Your Classes