我理解iterator()方法如何与ArrayList类一起使用.在ArrayList类中,我发现iterator()方法从同一个类AbstractList重写了两次.
public Iterator iterator() {
return new Itr(); // Itr is an inner private class of
// ArrayList which
// implements Iterator interface .
}
public Iterator iterator() {
return listIterator();
}
但这怎么可能呢?这里应该有一个已定义的错误.我很迷惑 .
解决方法:
您看到的第一个iterator()方法属于ArrayList类,但第二个不属于.
它属于SubList类,它是ArrayList的内部类:
private class SubList extends AbstractList implements RandomAccess {
...
public Iterator iterator() {
return listIterator();
}
...
}
因此,它不会被同一个类重写两次.每个班级都会覆盖一次.
标签:java,arraylist,iterator
来源: https://codeday.me/bug/20190727/1551911.html