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 大致相同. ...
随机推荐
- Clover file list
/Volumes/EFI//EFI: total 4 drwxrwxrwx 1 jianweiliu staff 512 Apr 20 12:17 APPLE drwxrwxrwx@ 1 jianwe ...
- 日期T转换
日期转换 在startup.csd ConfigureServices方法里 services.AddMvc().AddJsonOptions(o => { o.SerializerSettin ...
- IntelliJ IDEA Tomcat启动VM Options配置
-server -XX:PermSize=512M -XX:MaxPermSize=1024m -Dfile.encoding=UTF-8 JDK8中用metaspace代替permsize,因此在许 ...
- 第二十一天,pickle json xml shelve configparser模块
今日内容 1.pcikle 专用于python语言的序列化 2.json 是一种跨平台的数据格式 也属于序列化的一种方式 3.xml 可拓展标记语言 一种编写文档的语法 也支持跨平台 比较json而言 ...
- 四种对话框(dialog)的简单使用方法
有普通对话框,单选对话框,复选对话框,进度条的两种实现方法话不多说,直接上代码 activity_main.xml: <?xml version="1.0" encoding ...
- 面向对象—的__new__()方法详解
[Python] Python 之 __new__() 方法与实例化 __new__() 是在新式类中新出现的方法,它作用在构造方法建造实例之前,可以这么理解,在 Python 中存在于类里面的构 ...
- Verilog定义计算位宽的函数clogb2
在很多情况下要计算输入输出的位宽,比如你写一个8*8的ram,那么地址需要三位去表示,那么这个函数的方便就体现出来了,你需要使用函数定义就好了,如果对于多文件可以包含定义的文件: 如果你的DEPTH是 ...
- 【hjmmm网络流24题补全计划】
本文食用方式 按ABC--分层叙述思路 可以看完一步有思路后自行思考 飞行员配对问题 题目链接 这可能是24题里最水的一道吧... 很显然分成两个集合 左外籍飞行员 右皇家飞行员 跑二分图最大匹配 输 ...
- grafana安装使用及与zabbix集成
grafana简介Grafana是一个完全开源的度量分析与可视化平台,可对来自各种各种数据源的数据进行查询.分析.可视化处理以及配置告警. Grafana支持的数据源:官方:Graphite,Infl ...
- Android 9.png图片的制作方法
在Android的设计过程中,为了适配不同的手机分辨率,图片大多需要拉伸或者压缩,这样就出现了可以任意调整大小的一种图片格式".9.png".这种图片是用于Android开发的一种 ...