【Java】集合

鱼脑子的我到4月了还没找到工作,看了好几本书了,看完就忘。。我特么有毒。还是认认真真写一些笔记吧【我平时的笔记都是手写的,因为我喜欢写字,但是感觉手写不够简洁,重新整理一下】

集合分为四种体系:Set,List,Queue,Map。(集合和数组的区别:数组只能保存固定长度的数据。集合只能存储对象)

八种基本类型(集合不能存储,数组可以):byte,char,short,long,int,float,double,boolean

Set:无序不可重复

List:有序可重复

Map:有映射

Queue:队列(Java5添加)

继承关系(由Collection,Map接口派生):

Collection主要包含的方法:add(),remove(),contains(),equals(),iterator()等。

Set与Collection的区别:不能add相同元素。

List有Index。

Queue(FIFO):offer()插入,peek()获取但不移除队首,poll()获取并移除队首,remove()获取并移除队首。 

Deque:双向队列

ArrayList与Array的区别:可自动扩容的Array。使用ensureCapacityInternal,每次扩容1.5倍将之前的老数组拷贝到新数组中。

图里写错了不是LinkedDeque是LinkedList。是一个双链表的List,有first,last指针。以O(N/2)的性能获取数据,判断数据的位置选用首尾指针。

 Map中Key是用Set存放的,保护keySet()方法。主要方法put(),remove(),equals(),get()。包含一个Entry内部类封装Key和Value。

HashMap特点:允许null键/值,非同步,不保证有序,也不保证顺序不随时间变化。

HashMap put:

  1. 对key的hashCode做hash计算index(hash将低16bit与高16bit做了一个异或,hash函数为(n-1)&hash值)
  2. 没碰撞直接放入bucket
  3. 碰撞后以链表形式存放,若链表过长(大于等于TREEIFY_THRESHOLD),则转为红黑树存放
  4. 如果key已存在,则替换旧的value
  5. 如果entries大于capacity(bucket大小)*load factor(填满程度的最大比例)时,则resize调整为当前的2倍

LinkedHashMap:多用一个双链表来存放顺序

TreeMap:使用红黑树实现,使用中序遍历迭代输出有序

HashTable:不能有null值,是synchronized的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值