zoukankan      html  css  js  c++  java
  • ArrayList、LinkedList、Vector区别

    ArrayList、LinkedList、Vector均为可伸缩数组,即可以动态改变长度的数组。

    比较ArrayList和Vector:

    1. 共同点:

          ArrayList和Vector都是基于Object[] array来实现的,它们会在内存中开辟出一块连续的内存,正是因为数据存储是连续的,所以,它们支持通过下标来访问元素,这种访问方式比较快。但在插入或删除时需要移动容器中的元素,所以,对数据的插入和删除操作执行的比较慢

    2. 区别

          (1) ArrayList默认扩充为原来的1.5倍(没有提供设置空间扩充的方法),Vector默认扩充为原来的2倍(每次扩充空间的大小是可以设置的)。

          (2) 两者的最大区别是,Vector是线程安全的,而ArrayList不是线程安全的。

          (3) 正是因为Vector提供了线程安全机制,所以在性能上要略逊于ArrayList。

    LinkedList

          (1) 采用的是双向列表来实现的。

          (2) 访问要从列表头开始遍历,所以随意访问的效果比较低;但插入、删除时不需要对数据进行移动,所以插入、删除的效率比较高。

          (3) LinkedList是非线程安全的。

    总结:

          (1) 对数据的主要操作是索引或只在集合的末端增加、删除元素时,使用ArrayList或Vector效率比较高;

          (2) 对数据的主要操作是为指定位置的插入或删除操作时,使用LinkedList;

          (3) 当在多线程中使用容器时,选择Vector比较安全。

  • 相关阅读:
    基础【五】字典的操作方法
    基础【四】列表的操作方法
    基础【三】字符串的操作方法
    基础【二】while循环及基本运算符
    基础【一】基础数据类型
    C++ string 深拷贝 与 浅拷贝
    多进程引用的动态链接库中的全局变量问题
    C++ 在类里面使用多线程技术
    openwrt 解决包依赖关系
    lua 的元表与元方法
  • 原文地址:https://www.cnblogs.com/jiqianqian/p/6559489.html
Copyright © 2011-2022 走看看