zoukankan      html  css  js  c++  java
  • 一、基础篇--1.2Java集合-Arraylist 与 LinkedList 区别

    Arraylist 与 LinkedList 区别

    结构上的区别

    ArrayList底层实现基于动态数组,LinkedList底层实现基于双向链表。

    性能上区别

    ArrayList查询快,增删慢,LinkedList增删快,查询慢

    ArrayList和LinkedList都是非线程安全的

    遍历列表:

    常用的遍历列表有三种方法,分别为foreach、迭代器、for循环

    构造一个拥有100万数据的ArrayList和等价的LinkedList,测试结果的相对耗时如下表所示:

    List类型 forEach 迭代器 for循环
    ArrayList 110ms 81ms 16ms
    LinkedList 78ms 15ms 很久

    可以看到,最简便的ForEach循环并没有很好的性能表现,综合性能不如普通的迭代器,而是用for循环通过随机访问遍历列表时,ArrayList表项很好,但是LinkedList的表现却无法让人接受,甚至没有办法等待程序的结束。这是因为对LinkedList进行随机访问时,总会进行一次列表的遍历操作。性能非常差,应避免使用。

    要注意的地方

    1.ArrayList是基于数组实现的,如果不指定大小,会有个默认值,当空间不足时,每次扩容1.5倍,调用System.arraycopy(),如果arrayList存储数据较大,不指定具体大小,会很影响性能。

    2.LinkedList删除时候,先要遍历找到该节点,如果该节点在中间,数据量还比较大的话,性能较差。

  • 相关阅读:
    微信支付
    集成支付宝SDK流程
    使用ASIFormDataRequest完成用户的登录操作
    本地推送UILocalNotification
    iOS 远程推送通知 详解
    iOS 8 中如何集成 Touch ID 功能
    iOS指纹识别Touch ID的安全性探讨
    iOS 支付(含支付宝、银联、微信)
    iOS 社交化分享功能
    Python3内建函数sorted
  • 原文地址:https://www.cnblogs.com/foreverYoungCoder/p/10374740.html
Copyright © 2011-2022 走看看