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

    ArrayList、LinkedList和Vector均实现了List接口,均为可伸缩数组(均为可动态改变长度的数组)。它们是有序的集合,并且其中的元素允许重复。

    从底层实现来看:

    (1)ArrayList与Vector都采用数组数据结构来实现。因此查找效率高。

    (2)LinkedList采用链表数据结构来实现(带头尾节点的双链表)。因此插入、删除操作效率较高,尤其是两端的插入、删除操作。

    从线程安全来看:

    (1)ArrayList与LinkedList不是线程安全的。

    (2)Vector是线程安全的。Vector的绝大部分方法都是直接或间接同步的,正是由于Vector提供了线程安全机制,其性能要略逊于ArrayList。

    从数据增长来看:

    每次扩充存储空间时,不是只增加一个存储单元,而是增加多个存储单元,需要在空间利用率与程序效率之间取得一定的平衡。

    (1)Vector默认增长为原来的2倍,ArrayList默认增长为原来的1.5倍。ArrayList 与 Vector 都可以设置初始空间的大小, Vector 还可以设置增长空间的大小,而 ArrayList 没有提供设置增长空间大小的方法。

    在实际使用时,如何从这几种容器中选择合适的使用呢?

    (1)当对数据的主要操作为索引或只在集合的末尾插入、删除元素时,使用ArrayList或Vector效率比较高。

    (2)当对数据的主要操作为在指定的位置插入、删除元素时,使用LinkedList 效率比较高。

    (3)当在多线程中使用容器时(即多个线程会同时访问该容器),使用Vector比较安全。

    --------------------- 本文来自 神奇女侠666 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/qq_36544360/article/details/80888545?utm_source=copy 

  • 相关阅读:
    阿里云与物理服务器
    ## 100个网路基础知识##
    Linux 中vim编辑器
    Linux 目录结构及增删改查
    Linux 命令行常用快捷键
    XSS劫持cookie登录
    Tomcat
    centos 6.5 搭建DHCP实验
    centos 6.5 系统故障分析实验
    LVM的创建及管理
  • 原文地址:https://www.cnblogs.com/fengli9998/p/9756039.html
Copyright © 2011-2022 走看看