Java集合框架~雨果篇

集合框架第一篇。

ArrayList和LinkedList和Vector

1.存储结构不同 : ArrayList底层为数组,LinkedList为链表。
2. 存储元素特点不同:ArrayList元素可重复且有序,LinkedList元素不可重复且无序,两者都是List接口的实现类。
3. 底层结构不同:ArrayList数据结构为数组,连续的存储空间,内存占用大,LinkedList数据结构为链表,不连续的节点组成的链表,内存占用少。
4. 时间复杂度不同:ArrayList时间复杂度为O(1),空间为O(n),LinkedList相反,且ArrayList支持随机访问,适合查询,修改,LinkedList适合删除和新增。
5. Vector线程安全,不能过载。

HashSet和HashMap、HashTable

1.存储特点不同: HashSet元素不可重复且唯一,无序,HashMap存储key-value,键值可以为Null, key可重复,无序。HashTable相比HashMap键值对不可为null。
2.底层结构: HashSet:底层为hashMap,,每次put元素,都会调用hashMap的putMethod,将值存放到hashMap的key上,value为固定的对象。通过计算元素的hashCode值,得到索引,并存储到对应数组中的位置。如果元素已存在,则调用该元素的equalsMethod与新增的元素进行比较,相等则不存储。
HashMap:底层为数组+链表(1.7),数组+链表+红黑树(1.8),put元素,调用key的hashCode方法计算索引,然后将value存储到数组中,如果该位置已有元素,则将已有元素存储到链表的末尾,新的元素存储到链表的头部。这样解决了hashCode冲突问题。
jdk1.8以后优化:链表节点超过8个,自动转换为红黑树,红黑树节点小于6个自动转换为链表。
3.hashMap去掉了hashTable的contains方法,新增了containsValue And ContainsKey Method。

Iterator迭代器特点

1.Iterator只有单向指针,向前移动。
2.Often Method: Next(), HasNext(),remove()
3.ListIterator适用于List集合,双向指针。

Arrays的ArrayList和util包下的ArrayList区别?

1.Arrays是数组的工具类,Arrays的asList方法是将数组转换为内部类ArrayList,特点是数组长度是固定。
2.util包下的ArrayList才是动态数组。可以将asList Method返回的值作为ArrayList的构造方法参数,转换为真正的ArrayList。

怎样计算HashCode值?

这个回复吧

ConcurrentHashMap?

1.采用分段锁机制,每一段都是一个HashMap,写加锁,查询不加锁。
2.线程安全。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值