ArrayList是1。0版本以前的数据存储方式,那时的存储方式都进行了同步[
处理,也就是可以防止在多线程下几个线程同时访问一个数据,缺点是速
度慢,而LinkList是1.0版以后的数据存储方式,优点是速度快,但没有实
现同步,所以如果在你的程序中不牵扯到同步问题,最好还是用LinkList

解决方案 »

  1.   

    cd1860(守莲小子):
     ArrayList 是在1.2版本定义,作为一个常规用途的对象容器使用,用于替换1.0版本中的Vector,不同步,用于快速访问元素。
     请先搞清楚ArrayList和Vector的区别,ok:)
      

  2.   

    LinkList比ArrayList 在插入排序方面是比ArrayList强
      

  3.   

    不好意思,刚才解释错误,把ArrayList和Vector混了,应该是ArrayList
    的优点在于查询,因其基于数组,而LinkList优点在于删除修改,因其基于
    双向链表。
      多谢linetsam() 提醒。
      

  4.   

    进行大量增加,删除这是LinkedList的优势,vector和它差不多。进行查找,遍历,这应该是ArrayList的优势。
      

  5.   

    使用vector,在集合中间位置进行元素增加,删除时,一样很慢,这样特性同ArrayList,
    这样却是LinkedList的长处。在这儿只想比较ArrayList和LinkedList的特性。
    如果想对一数据集进行随机增删,并要进行循环读取,将LinkedList和ArrayList结合使用是否
    能保证效率? addAll()方法是否为带来较大开销? 请大家关注最上的四个问题。
      

  6.   

    1.看你怎样遍历?,ArrayList随机性好,LinkedList添加删除好
    2,转换开销应该是一样的,因为addall()这个方法在collection里就具体实现,非要深究,我 认为ArrayList.addAll(LinkedList)比LinkedList.addAll(ArrayList)要快,因为linklist总是比arraylist在整体遍历上好,唯一的缺点是linklist总是从头接点开始,所以随机操作很差
    3。你的答案是对的,是最好的方式。但里边有一个addall(),小数据量时千万别用,小数据量时一个addall()是开销很多的
    4。不知道vector与arraylist是一模一样的,唯一的不同是arraylist内部实现的机智是通过链表实现的,而vector不太清楚,所以arraylist一般比vector要快,是vector的替代产物关于同步性,比c++的stl要差的多,java的collection是用一种简单的方法实现的,就是在对collection节点修改时,在该节点进行锁操作,但要注意,set方法不属于锁操作,锁操作主要指添加删除操作更详细的内容,请见《java核心II》
      

  7.   

    3、应该没有必要再转到ArrayList中吧?这个转换过程应该就是一次遍历了,这样不就要进行两次遍历?
      

  8.   

    这里的遍历是指:将集合从头到尾扫描(读取)。--"linklist总是比arraylist在整体遍历上好" 
    是指的什么?如果做集合从头到尾扫描,ArrayList速度应该比LinkedList快20倍以上。--"但里边有一个addall(),小数据量时千万别用,小数据量时一个addall()是开销很多的"
    为什么小数量会开销很多,而大数量却不会?能否谈谈addAll()的具体行为?--"vector与arraylist是一模一样的,唯一的不同是arraylist内部实现的机智是通过链表实现的,而vector不太清楚,所以arraylist一般比vector要快,是vector的替代产物"
    Vector和ArrayList都应该是数组后推,主要区别应该是否同步。而LinkedList才是通过双向链表
    实现。