核心技术上说Iterator只有三个操作:hasNext,next,remove。如果我想让迭代器自由移动,而不是只向单方向移动,有什么办法吗?还有,ArrayList有没有一个常量指代第一个元素,即迅速得到第一个元素的引用,最好是用迭代器实现。

解决方案 »

  1.   

    ArrayList.get(i)
    i从0开始,可以获得任意位置的元素
    i不可越限
      

  2.   

    为什么要用Iterator呢,  如果想自由的移动,  直接用get很方便啊,   get(0) 就得到了第一个元素
      

  3.   

    Iterator 只能向后,不能向前的如果想随机访问,直接用 ArrayList.get(int index) 方法
      

  4.   

    ArrayList 本就是数组结构。要取第一个元素用get(0)就ok了,数组取每个元素都是按索引取的java.util.LinkedList 这个是链表结构的,有getFirst()方法取首元素,
      

  5.   

    arraylist.listIterator()  : java.util.ListIterator 
      

  6.   

    不要用iterator用listIterator可以双向移动如下:
        public static void main(String[] args) {
            ArrayList<Integer> list = new ArrayList<Integer>();
            for (int i = 1; i < 10; i++) {
                list.add(i);
            }        System.out.println("即迅速得到第一个元素: " + list.get(0));        System.out.println("反向遍历");
            ListIterator<Integer> liter = list.listIterator(list.size());
            while (liter.hasPrevious()) {
                System.out.println(liter.previous());
            }
        }
      

  7.   


    for(int i=arrayList.size()-1;i>=0;i--){
       Object obj=arrayList.get(i);
    }
      

  8.   

    for(int i=0;i<arrayList.size();;i++){
      Object obj=arrayList.get(i);
    }
      

  9.   

    ArrayList是List的子类。虽然叫List,但是它的数据结构实际是数组,一个动态数组。你要向前向后访问,那就用LinkedList,这才是真正的链表
      

  10.   

    我曾经试过,效率上Iterator会快很多
      

  11.   


    呃,就遍历而言效率因该是Iterator比较低吧,至少我以前测试都是这样的
    加强for循环对于容器类用的也是迭代器遍历,效率也要比for随机访问低一些
      

  12.   

    ArrayList底层是数组,不能倒退