最近学了集合,其中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() 这一步是不是只是从集合中取出元素,并没有将前边的集合转成数组?迭代器是不是就是一个循环?
求大神支招。 |
|