我在用java写算法时,有可能会用到hashMap或者arrayList,这些方法通过get获取值的时候分别是通过遍历还是根据索引?
据我了解,普通的数组比如int a[]; 获取值比如a[0]是通过索引获取值的,不知道对不对
我想请问下,在java中哪些数组类型类在获取值时是通过索引取值,哪些是通过遍历

解决方案 »

  1.   

    ArrayList是索引HashMap是直接计算key的hash值,快速定位,但是相同的hash可能有多个元素,这就有一个哈希桶
    数据结构一书都有讲到的吧
      

  2.   

    如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。
      如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。
      要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。
      

  3.   

    array结构如数组、arrayList、vector等是用索引,因为内存是连续的,链表结构如LinkedList只能是遍历,而Map、HashMap、Dictionary等是通过key取得value