多线程

ArrayList VS Vector
两个类都实现了List接口,他们都是有序集合,相当于一个动态数组,数据允许重复。
1.同步性:
Vector是线程安全的,即线程同步。多线程访问,安全性高。
ArrayList是线程不安全的,即线程不同步。单线程访问使用,效率更高一些。
2.数据增长:
两者都有初始容量大小
Vector默认增长为原来的两倍。
ArrayList默认增长为原来的1.5倍。

HashMap Vs HashTable
HashMap是HashTable的轻量级实现,都继承了Map接口
1.是否允许空值:
HashMap允许空(null)键值(key)
HashTable不允许空
2.同步性:
HashMap 线程不安全,(非同步)执行效率高。
HashTable线程安全,(同步)执行效率较低。
3.方法改变
HashMap把HashTable的contains方法去掉改成了containsValue和containsKey。
4.HashTable基于陈旧的Dictionary类,HashMap是java1.2引进的Map接口的一个实现。

List VS Map
List:存储单列数据集合, 数据有顺序,允许重复。
Map :存储键和值双列数据集合,数据无顺序,不能重复,值可以重复。

List 、Map、 Set三个接口存取元素特点
List 和 Set具有相似性,都是单列元素的集合,有一个共同的父接口Collection
Set不允许元素重复,Set集合的add方法有一个boolean返回值
Set取元素没法说取第几个,只能以Iterator接口取得所有元素,再逐一遍历
List有先后顺序,可以使用get(index i)来明确说明取第几个。
Map是双列集合,拥有put(obj key,obj value)方法,每次存储,要存键值对
不能存储重复的key,可以get(obj key)返回值为key所对应的value
HashSet按照hashcode值的某种运算方式进行存储,而不是按照hashCode值大小进行存储。
LinkedHashSet按插入的顺序存储。

set方法:add,remove,contains iterator方法
map方法:put,remove,contains
list方法:get(index i) iterator方法

ArrayList,Vector, LinkedList的存储性能和特性
ArrayList,Vector采用数组方式存储数据,都允许直接按照序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引快,插入慢。
Vector使用synchronized方法,性能比ArrayList差
LinkedList采用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时,只需要记录本项的前后项即可,所以插入速度快。
LinkedList也是线程不安全的。LinkedList提供了一些方法,使得LinkedList被当成堆栈来使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值