Vector ArrayList Hashtable HashMap ArrayList LinkedList
1. Vector & ArrayList
1) Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。
2) 当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。
2. Hashtable & HashMap
Hashtable和HashMap它们的性能方面的比较类似 Vector和ArrayList,比如Hashtable的方法是同步的,而HashMap的不是。
3. ArrayList & LinkedList
ArrayList的内部实现是基于内部数组Object[],所以从概念上讲,它更象数组,但LinkedList的内部实现是基于一组连接的记录,所以,它更象一个链表结构,所以,它们在性能上有很大的差别:
从上面的分析可知,在ArrayList的前面或中间插入数据时,你必须将其后的所有数据相应的后移,这样必然要花费较多时间,所以,当你的操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能; 而访问链表中的某个元素时,就必须从链表的一端开始沿着连接方向一个一个元素地去查找,直到找到所需的元素为止,所以,当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。
如果在编程中,1、2两种情形交替出现,这时,你可以考虑使用List这样的通用接口,而不用关心具体的实现,在具体的情形下,它的性能由具体的实现来保证。
4. 配置集合类的初始大小
在Java集合框架中的大部分类的大小是可以随着元素个数的增加而相应的增加的,我们似乎不用关心它的初始大小,但如果我们考虑类的性能问题时,就一定要考虑尽可能地设置好集合对象的初始大小,这将大大提高代码的性能。
比如,Hashtable缺省的初始大小为101,载入因子为0.75,即如果其中的元素个数超过75个,它就必须增加大小并重新组织元素,所以,如果你知道在创建一个新的Hashtable对象时就知道元素的确切数目如为110,那么,就应将其初始大小设为110/0.75=148,这样,就可以避免重新组织内存并增加大小。
Vector ArrayList Hashtable HashMap ArrayList LinkedList相关推荐
- [转]Vector、ArrayList和hashtable hashmap数据结构
线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中.本文试图通过简单的描述,向读者阐述各个类的作用以 ...
- 线程安全的使用ArrayList和HashMap
前言 如果你看过源码,那么你肯定知道ArrayList和HashMap是线程不安全的,它们二者都采用了fast-fail机制.但之前小组考核的时候,学长问了我如何线程安全的使用HashMap,那时候确 ...
- concurrentarraylist_java多线程学习七::::并发下ArrayList和HashMap
本程序中的java环境是jdk1.8,之前的javajava多线程学习一到六的环境也是jdk1.8 程序中的幽灵:隐蔽的错误 package rs.thread.day0504; /** * @aut ...
- Java 集合HashSet TreeSet HashMap ArrayList TreeList
1.体系结构 2.工具类: package collection;public class InnerTest {private int age;public final int getAge() { ...
- C#集合类(HashTable, Dictionary, ArrayList)与HashTable线程安全
HashTable中的key/value均为object类型,由包含集合元素的存储桶组成.存储桶是 HashTable中各元素的虚拟子组,与大多数集合中进行的搜索和检索相比,存储桶可令搜索和检索更为便 ...
- C#集合类(HashTable, Dictionary, ArrayList,List)与HashTable线程安全
HashTable中的key/value均为object类型,由包含集合元素的存储桶组成.存储桶是 HashTable中各元素的虚拟子组,与大多数集合中进行的搜索和检索相比,存储桶可令搜索和检索更为便 ...
- arraylist 线程安全_数据结构之Array、ArrayList、List、LinkedList对比分析
作者:小许子 https://www.cnblogs.com/xiaoXuZhi/p/XYH_dataStructureTest_array.html 一.前言: 在c#数据结构中,集合的应用非常广泛 ...
- ArrayList和HashMap遍历比较
目录 一.ArrayList遍历方式 1.普通for循环遍历 2.增强for循环遍历 3.Iterator迭代器遍历 4.三种方式比较 二.Map遍历方式 1.增强for循环 + keySet() 遍 ...
- Java 7 对ArrayList和HashMap的性能的提升
2019独角兽企业重金招聘Python工程师标准>>> 在最新的Java7的ArrayList和HashMap, JDK做了一些调整. ArrayList以前的版本是默认创建10个元 ...
最新文章
- 系统权限管理设计 (转:http://blog.csdn.net/chexlong/article/details/37697555)
- 比较Visual Studio中的两个文件
- oracle执行计划走索引类型,SQL执行计划问题:where条件是主键(NUMBER类型字段)LIKE :VAR,为什么执行计划不走索引?...
- C++: byte和int的相互转化
- leetcode 200 python
- 【剑指Offer】10、矩形覆盖
- DeepZoom交互方式查看高分辨率图像技术知识点
- Linux编程:获取时间戳
- 我的世界java版幻翼_见到幻翼的方式是熬夜?这几个被忽略了
- 关于Mysql中的生日提醒
- 使用Riverbed SteelCentral NetProfiler,大海捞针不再难
- 《Java解惑》系列——01表达式之谜——谜题09:半斤
- 【acm 博弈论 】 之 Nim游戏与sg函数
- Win7怎么卸载微软输入法?
- Clickhouse打包aarch64二进制文件
- 脑波和眼动连通性分析 python-(2)
- 西门子博图指令(位逻辑运算指令二)
- linux连接ps4手柄,PS4模拟器新视频公布:已可进入安全模式菜单 支持PS4手柄
- 联想电脑管家 锁屏壁纸目录
- 电脑公司GHOST WIN7 SP1装机版2014.04(32位)
热门文章
- 说说设计模式~组合模式(Composite)
- LNMP安装常见问题集锦(一)
- android NDK 二、编译方法
- 使用自定义色系美化JfreeChart图表
- Windows安装配置tidevice
- ORACAL去除表中null转化为0
- web前段学习day_01:HTML(学习如何搭建页面结构和内容):文本标签、列表标签、图片标签、超链接、表格、表单表单、分区标签、实体引用
- Xamarin XAML语言教程构建ControlTemplate控件模板 (二)
- Nmap扫描教程之Nmap基础知识
- 禅道 php api,禅道 Rest API 开发