黑马程序员技术交流社区

标题: 关于接口List的子类的用迭代器的遍历? [打印本页]

作者: Act    时间: 2015-4-1 23:16
标题: 关于接口List的子类的用迭代器的遍历?
最近学了集合,其中collection根接口中有两个子接口。List跟set。set集合暂且不说(还没学呢),先来说一说我在List集合中遇到的问题吧。

List有三个子类,ArrayList,LinkedList,Vector,Vector现在用的不多了,暂且不说,就说前两个吧。

ArrayList底层数据结构是数组,所以侧重查询的时候可以优先使用;LinkedList底层数据结构是链表,增删多的时候可以优先使用。

问题一:
ArrayList底层数据结构是数组,可以直接for循环遍历我明白,但是LinkedList底层数据结构是链表,我试验过也可以直接for循环遍历;查API,发现他们都继承了List里的public E get(int index)方法,所以说都可以实现获取元素这一步。以前只知道数组可以遍历,是因为可以用.length得到数组的长度,并可以arr[x]获得其中的元素;集合在List下可以直接用int size()返回集合中的元素数,是不是只要知道长度都可以用for循环遍历?
问题二:
迭代器Iterator<E> iterator()  这一步是不是只是从集合中取出元素,并没有将前边的集合转成数组?迭代器是不是就是一个循环?

求大神支招。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2