java集合梳理

集合重点分为两个大类型
Collection和Map两个大类:
其中Collction分了:List和set:共同特性都是单元素集合;
其中list 包含重要集合有,ArrayList和Linkedlist和Vector:
其中ArrayList底层的可变数组,所以他的查速度是最快的,扩容方式要是给了默认值,就按照默认值的1.5部扩容,要是没有给默认值,那么底层就会有一个默认值为10,然后在按照1.5部进行扩容,因为他的方法没有被synchronized修饰所以他的方法是线程不安全的
其中Vector底层也是一个可变数组,相比较与ArryList他是线程安全的方法被synchronized修饰,所以他的查询速度没有ArrayList快,扩容机制:在给了一个默认值的情况下,按照默认值的2倍扩容,如果没有给默认值的话,就按他底层的默认值10进行扩容,每一次也是扩容两倍。
Linkedlist:他的底层是一个双向链表,一个指向前面一个指向后面形成的,还有一个头节点,和尾节点,因为他的底层是一个双向链表,所以他的修改,和删除速度比较快,由于他的方法没有把synchronized修饰,所以他是线程不安全的。

set:下面有HashSet和TreeSet为重点:
其中HashSet是无须的,但是他遍历出来的元素也只有一种输出方式,之所以会这样就是因为他的底层是由HashMap组成的,HashMap的底层是由k-v组成,但是由于HashSet是单个的元素,所以他只占用了他的k,v被一个static和fin修饰的元素占据,所以导致他具有HashMap的一些性质,他的底层是由一个数组,链表加红黑树组成,所以导致里面的元素不能重复,因为一个相同的元素具有一个相同的哈希值(经过底层处理的),然后进行元素equals进行判断元素是否一样,如果是一样的那么就不添加进去,扩容机制,如果给了一个初始值,那么我们就按照初始值的两倍进行扩容,如果没有给初始值,我们就按照他的底层给的默认值16进行扩容,由于他的方法没有进行synchronized修饰,所以他是线程不安全的,但是我们的发明者很牛逼,创建一个临界值,默认值乘0.75,当元素放到了临界值的个数之后,数组就会进行扩容,红黑树:是当数组扩容到64,并且一条链表的元素个数到达了8个就会形成红黑树,

TreeSet:他的底层是TreeMap,所以他们两个的方法和属性是十分相似的,都是可以排序的,排序定义可以定义员工内部类,Comparator,将条件放入内部类来进行自己想要的排序,他的底层去重是可以程序员自己定义,或者根据他自己调用底层的方法compareTo

Map:常用的集合有:HashMap和TreeMap和Properties
其中HashMap和TreeMap都是和上面呢个set两个类似,当时一个是单元素,他是双元素,k-v都是自己定义。
Propertoes:功能是读取文件,和I/O流配合使用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值