arraylist linklist stack hashmap hashtable的区别

    arraylist linklist stack hashmap hashtable是我们经常能用到的集合类,关于他们之间的联系与区别是经常面试的必考题目,下面我们就来大致了解一下这几者之间的关系:

   1、实现机制:

   arraylist是基于数组实现的,可以用下标进行值的存取,默认的大小是10,也可以扩展其容量;linklist是基于链表结构实现的数据集合类,准确的说是采取的是双向链表结构;stack是基于栈结构实现的,即存在后进先出的存取顺序;hashmap和hashtable基于哈希表的map接口的实现类,其存储方式是键值对的形式,即key-value,两者在结构上的区别不大。

   2、运行效率

   这里我主要把运行效率分为访问效率(读取)和存取效率(增加删除操作),两者在不同的集合类上的效率是不同的,在arraylist中,由于是基于数组实现,所以在访问操作上是效率比linklist的效率高(访问第一个元素时不一定存在此结果),因为链表结构的集合类在访问时涉及从第一个元素开始遍历,直到找到目标元素,而数组结构可以直接读取数据。在存取效率上,arraylist要比linklist低(当数据增加在集合最后一个元素=之后事此结果不一定存在),因为数组结构的存取涉及元素的移动,而链表结构则直接在相应位置添加,再增加相应的地址指针就可以了。此外,hashmap和hashtable由于结构上的差距不,所以在效率上也不大。

   3、同步性

  arraylist和hashmap没有使用synchronized方法,即本身不自带同步(线程不安全),当我们需要使用同步时,需要自己外部给他同步,而vector和hashtable的方法是Synchronize的,在多个线程访问该集合对象时,线程安全。

   4、其他

        1 ) hashmap允许一个null的key、一个或者多个null的value,但hashtable不允许有null存在;

        2)list类允许元素重复,但set类不允许元素重复;

        3 ) HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey

若有不对的地方,希望大神们多多指教。

   

转载于:https://my.oschina.net/u/2341603/blog/398413

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值