【管它原创不原创,被转载的才是好东西】浅浅浅浅的谈集合

集合相信大家都已经不陌生了,以下说的几点是薄主面试中遇到的总结。。。

先说下集合这个大体系,分为单列集合,有list:有序可重复  ,不指定长度,默认10(会新建10 个数组),自动扩容0.5倍+1=16。 arraylist底层是数组,线程不同步,效率高,有了索引查询快,相对其他而言的话增删改慢了就。linkedlist底层链表结构 增删快,线程不同步,但是查询就慢了。   

                                                                 还有set无序不可重复。hashset,底层是哈希表,不同步效率高,比较是否相同的话先比较哈希值hashcode是否相同,如果相同再去比较equals元素是否相同。   treeset底层是二叉树,不同步效率高。

   再说双列集合map :默认长度是16 ,有负载因子,长度的0.75倍,也就是说当长度大于16*0.75=12就会自动扩容2倍,这个时候的长度就是32。

                                                                 hashmap是jdk1.2以后出来的,是根据hashcode值进行存数据的,根据键获取值的,线程不同步,多个线程去操作一个hashmap,效率高,允许一个key为空多个value为空。解决线程同步问题,我们可以用synchronizeMap方法返回一个map对象让hashmap有同步能力,来解决线程安全问题。 

                                                                 hashtable继承了dictionary类,线程同步安全的,只允许一个线程去访问hashtable,存取速度没有hashmap快。 

                                                                 treemap:底层二叉树,线程不同步,高效,给集合中的键排序。

基本上先说这么多,毕竟是两年工作经验,后续有深入研究陆续更新。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值