java - Why does the Iterator.next() method of ArrayList copy the elementData field? -
here source code of next()
method in iterator
provided arraylist.iterator()
:
public e next() { checkforcomodification(); int = cursor; if (i >= size) throw new nosuchelementexception(); // why copy entire elementdata outer arraylist class? object[] elementdata = arraylist.this.elementdata; if (i >= elementdata.length) throw new concurrentmodificationexception(); cursor = + 1; return (e) elementdata[lastret = i]; }
why code jdk try copy entire data array elementdata
inner class iterator, since inner class has access fields in outer class? expensive huge list.
i know there must explanation behind code - it?
my question why jdk try copy entire data array inner class iterator. expensive huge list.
no, isn't. copies reference array, not array itself. o(1); not expensive @ all.
elementdata
have accessed itr.outerclass.elementdata
, outerclass
being implicit reference inner class carries outer, change reduces number of indirections , references followed (by tiny amount, it's iterating on arraylist
, it's 1 of common operations ever).
Comments
Post a Comment