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
ArrayList、LinkList、Vector的区别的更多相关文章
- ArrayList和Vector的区别
3.ArrayList和Vector的区别 答: 这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种 ...
- ArrayList与Vector的区别
ArrayList与Vector的区别 相同 这两个类都实现了List接口. 他们都是有序集合. 不同 ArrayList实现不是同步的,Vector实现是同步的. ArrayList与Vector都 ...
- ArrayList 和 Vector 的区别
这两个类都实现了 List 接口( List 接口继承了 Collection 接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按位置索引号取 ...
- ArrayList和Vector的区别?
ArrayList和Vector的区别? 解答:同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程不安全的,不是同步的:数据增长:当需要增长时,Vector默认增长为原来一 ...
- ArrayList和Vector的区别?HashMap和HashTable的区别?StringBuilder、StringBuffer和String的区别?
ArrayList和Vector的区别?从两个方面 1.同步性:ArrayList是线程不安全的,是非同步的:Vector是线程安全的,是同步的.(Java中线程的同步也就满足了安全性) 2.数值增长 ...
- 一、基础篇--1.2Java集合-ArrayList和Vector的区别
ArrayList和Vector的区别 ArrayList和Vector都是基于动态数组实现的. 区别 ArrayList是非线程安全的,Vector是线程安全的. Vector的方法都加了同步锁 ...
- 集合框架,ArrayList和Vector的区别,让arrayList线程安全的几种方案
boolean add(E e) 将指定的元素添加到此列表的尾部. void add(int index, E element) 将指定的元素插入此列表中的指定位置. boolean addAll(C ...
- 【Java面试题】32 ArrayList和Vector的区别
1. Vector & ArrayList 相同点: 1.ArrayList和Vector都是继承了相同的父类和实现了相同的接口 2.底层都是数组实现的 3.初始默认长度都为10. 不同点: ...
- Java中ArrayList和LinkedList区别、ArrayList和Vector的区别
一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. 2.对于随机访问get和set,Ar ...
- hashmap和hashtable,arraylist和vector的区别
hashmap线程不安全,hashtable线程安全 hashmap允许使用 null 值和 null 键.(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同. ...
随机推荐
- sql left join多表
表A---------------------------------关联第一张表B-----------------------关联第二张表c select * fomr 表名A left join ...
- linux 目录分类与文件操作
/ 虚拟根目录 一般不会在这里存储文件 /bin 二进制目录,存放需要GNU用户级的工具 /boot 启动目录,存放启动文件 /dev 设备目录,linux在这里创建设备节点 /etc 系统配置文件目 ...
- Django models中关于blank与null的补充说明
Django models中关于blank与null的补充说明 建立一个简易Model class Person(models.Model): GENDER_CHOICES=( (1,'Male'), ...
- html input 禁止输入中文
<input type="text" class="tel" onkeyup="value=value.replace(/[\u4e00-\u9 ...
- CentOS安装GIt、上传项目到git仓库
上传项目 登录服务器后安装git yum install git 新建文件夹(仓库) mkdir *.git 初始化仓库 git init --bare *.git 在本地初始化仓库 git init ...
- sed 收集
#删除倒数第二行的最后的逗号 一条命令 sed ':1;$b;N;/InnoDB/!b1;s/,\n)/\n)/'
- VueCLI3如何更改安装时的包管理器为yarn或npm
在执行 vue create project 后如果显示如下 npm run serve 则表示你使用的是npm创建的项目. 如果显示如下 yarn serve 则表示此项目为yarn创建. 那如何切 ...
- 【AtCoder - 2300】Snuke Line(树状数组)
BUPT2017 wintertraining(15) #9A 题意 有n个纪念品,购买区间是\([l_i,r_i]\).求每i(1-m)站停一次,可以买到多少纪念品. 题解 每隔d站停一次的列车,一 ...
- Codeforces Round #429 (Div. 1) C. On the Bench(dp + 组合数)
题意 一个长度为 \(n\) 的序列 \(A\) ,定义一个 \(1\) 到 \(n\) 的排列 \(p\) 是合法的,当且仅当 \(\forall i \in [1, n − 1], A_{p_i} ...
- Centos 7.3 安装Grafana 6.0
grafana简介 Grafana是一个完全开源的度量分析与可视化平台,可对来自各种各种数据源的数据进行查询.分析.可视化处理以及配置告警. Grafana支持的数据源: 官方:Graphite,In ...