集合心得

1、  Collection分为两种类型的接口:List和Set,两者最明显的差别是list支持放入重复的对象,而set不支持。list接口常用的实现类有:ArrayList、linkedlist、vector、stack;Set接口常用的实现类有HashSet、TreeSet。

2、ArrayList:是基于数组方式实现的,无容量的限制;在执行插入操作时可能要扩容,在删除元素时并不会减小数组的容量,是非线程安全的。,

3、LinkedList是基于双向链表机制,就是集合中的每个元素都知道其前一个元素及其后一个元素的位置,是基于双向链表机制实现,在插入元素时,需创建一个新的entry对象,并切换相应元素的前后元素的引用;在查找元素时,需遍历链表;在删除元素时,要遍历链表,找到要删除的元素,然后从链表中删除即可;是非线程安全的。

4、Vector是基于Synchronized实现线程安全的ArrayList,但是在插入元素时容量扩充的机制和ArrayList不同,可通过传入capatityIncrement来控制容量的扩充,和ArrayList不同点是当数组大小不够时,其扩大数组的方法有所不同,Vector的策ruo是如果capcatityIncrement大于0,则将object数组的大小扩大为现有size加上capcatityIncrement的值,如果capcatityIncrement等于或小于0,则将object数组的大小扩大为现在size的2倍,这种容量的控制策若比arrayList更可控。

5、Stack继承于Vector,在此基础上实现了stack所要求的的后进先出lifo的弹压及压入操作,其提供了push、pop、peek,

stack是基于vector的实现,支持LiFO。

6、Hashset是set接口的实现,不允许元素重复,注意:是基于hashMap实现的,无容量限制;是非线程安全的。

7、TreeSet和hashset主要不同是在于treeset对于排序的支持,treeset基于treemap实现,也是非线程安全的。

8、HashMap采用数组方式存储的key、value构成的entry对象,无容量限制;是基于key hash寻找到entry对象存放到数组的位置,对于hash冲突采用链表的方式来解决;在插入元素的时可能会扩大数组的容量,在扩大时需重新计算hash,并复制对象到新的数组中;是非线程安全的。

9、treemap是一个支持排序的map实现,非线程安全的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值