2020-11-6Java-Stack和Queue随笔

今天看到群里大佬讨论hashmap谈到java设计,
以前写题的时候也注意到了一些奇怪的地方,比如Queue和Stack
Queue是一个接口,而Stack是一个类…
Stack是java第一个版本的时候发布的继承自Vector
而Queue继承自Collection.
注意到是不推荐Stack的,于是就好奇的搜了下原因.
因为Vector也是不推荐使用的?所以不推荐Stack类,建议使用Deque
而Vector不推荐使用的原因大致如下
1: vector是线程安全的,效率较低,在需要保证线程安全的方法上都加了synchronized
然而这样并没有很好的解决线程安全问题
if (!vector.contains(element))
vector.add(element);
} 在判断是否包含某元素后, 会释放锁,在不包含的情况下,执行add之前,锁很有可能会被抢占。
2: 扩容的时候是扩容一倍,内存不可复用,而ArrayList是一半.
3: Vector分配内存是连续的存储空间,如果数据太多,容易分配内存失败
4: 只能在尾部进行插入和删除操作,效率低

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值