zoukankan      html  css  js  c++  java
  • java方法区别之一一ArrayList和LinkedList

    容器:
    1.Collection(interface)
    a.Set((interface)):不允许重复
    (1).HashSet:无序不重复
    (2).TreeSet:有序不重复
    b.List(interface):有序(元素存入顺序),可重复
    (1).LinkedList:链表,线程不安全
    (2).ArrayList:数组,线程不安全
    (3).Vector:数组,线程安全
    2.Map(interface)
    a.HashMap

    ArrayList:是通过维护数组来实现的
    改、查操作使用ArrayList速度快捷

    ArrayList实现了List接口,它是以数组的方式来实现的,数组的特性是可以使用索引的方式来快速定位对象的位置,因此对于快速的随机取得对象的需求,使用ArrayList实现执行效率上会比较好. 


    LinkedList:是用双向链表实现的
    删、增速度较快。
    两个都是类,要创建对象。用new创建。

    LinkedList是采用链表的方式来实现List接口的,它本身有自己特定的方法,如: addFirst(),addLast(),getFirst(),removeFirst()等. 由于是采用链表实现的,因此在进行insert和remove动作时在效率上要比ArrayList要好得多!适合用来实现Stack(堆栈)与Queue(队列),前者先进后出,后者是先进先出.

    在删除可插入对象的动作时,为什么ArrayList的效率会比较低呢?

    解析: 因为ArrayList是使用数组实现的,若要从数组中删除或插入某一个对象,需要移动后段的数组元素,从而会重新调整索引顺序,调整索引顺序会消耗一定的时间,所以速度上就会比LinkedList要慢许多. 相反,LinkedList是使用链表实现的,若要从链表中删除或插入某一个对象,只需要改变前后对象的引用即可!

  • 相关阅读:
    hdu 1269 迷宫城堡 (并查集)
    hdu 1272 小希的迷宫 (深搜)
    hdu 1026 Ignatius and the Princess I (深搜)
    hdu 1099 Lottery
    hdu 1068 Girls and Boys (二分匹配)
    几个基础数位DP(hdu 2089,hdu 3555,uestc 1307 windy 数)
    hdu 1072 Nightmare (广搜)
    hdu 1398 Square Coins (母函数)
    hdu 1253 胜利大逃亡 (深搜)
    hdu 1115 Lifting the Stone (求重心)
  • 原文地址:https://www.cnblogs.com/bsfl-study/p/9231222.html
Copyright © 2011-2022 走看看