ArrayList、LinkedList区别

来源:互联网 发布:国内大数据应用案例 编辑:程序博客网 时间:2024/06/05 08:46

ArrayList、LinkedList

两者都是List接口的实现类,但是底层实现却不同,ArrayList底层是基于数组实现,而LinkedList底层为双向链表实现

ArrayList

  • ArrayList是基于数组实现,可重复的集合类,应该是大家平时使用最多的集合类了。
    • 初始capacity为10,超出限制的话则会增加原来的百分之50%,代码实现为
      intnewCapacity =oldCapacity + (oldCapacity >> 1); 扩容底层都是使用System.arraycope拷贝到新数组中实现。
    • trimTosize的使用,释放没有使用的空间,即将此ArrayList实例的容量调整为列表的当前大小

LinkedList

  • LinkedList是基于双向链表,可重复的集合类
    • 链表无容量限制,但双向链表本身使用了更多空间,也需要额外的链表指针操作。
    • 按下标访问元素—get(i)、set(i,e) 时则要遍历链表将指针移动到位(如果i>数组大小的一半,会从末尾开始移动)。

两者相同点:那就是都不是线程安全的,所以在使用中,要根据业务特性选择合适的集合类。

0 0
原创粉丝点击