JAVA中Iterator方法中有两种取值方法,例如Iterator<Student> it = list.iterator();

1>it.get(i);<2>it.next();JDK上看说明get(i)尽量少用,但这是为什么呢,这种取值方法相比较next()有什么弊端吗?请帮忙解决。

Iterator由集合类通过工厂方法生成,方法中记录的存取方式有两种,一种是顺序存储,另一个是链接存储。如果你用for(int i)【这里比如for中的变量是i】然后get,i的值越就越慢(因为对于越往后面的值他都要统统找一边,知道找到那个下标为i的),但是用next就不一样,不后你的值有多大多深,他的next指针永远指向当前位置的下一个。比如你要找第1W个的那个值,你用for到9999的时候(9999之前的所有消耗暂且忽略不算)准备找第10000个了,现在确定是要找下标为10000的。虽然现在到了9999,但是他还是要从头找,如果是next,因为现在已经到了9999,而他的下一个刚好是10000,就很快。给你个例子,放了10层书,我现在你找到了第9层数数学,我要第十层的那本书,第一种的话,你已然要从头开始1,2,3层的数到第10层,但是next的话,你就知道哦,下一个就是我要的。(之前的那个10是用其他外部变量循环的来的,next就迭代器内部的)水平有限,不知道说的对不对。我是这样理解的。呵呵

你应该这样问,集合的get方法遍历值和用集合的迭代器遍历值,他们的利与弊。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-17
迭代器是推荐模式,因为顺序查询,无需随机寻址,因而时间要快。不过对于普通应用程序而言,差别不大。追问

也就是说,如果get(i)中得I是叠加的,效率是和用next()一样?

追答

也不会

第2个回答  2011-10-17
next效率远比get高
相似回答