集合容器
1.常用集合List、Set、Map
List、Set为一个分支Map为另外一个分支(如上图)List、Set 继承Collection、而Collection继承Iterable
2.Iterable
所有集合的的父类 、实现所有Iterable的类都可以有:
- 增强for循环(foreach)
- iterator()迭代器:
- hasNext():是否存在下一项
- next():下一项
- remove():删除由next()返回的最新项
这里就提到Collection和iterator的remove方法区别?
- 性能方面:iterator必须结合next()使用,隔一项删除一项。而Collection底层是链表结构先找到下标再移除使用性能低
- 容错:iterator遍历使用Collection的remove会因为对象个数改变不一致而出现异常,而iterator内部对象个数和原来集合对象个数会保持一致
3.List集合特点
- 有序可重复
- List的实现类:
- ArrayList:查询速度快、添加、删除的性能低
- LinkedList:查询性能低、添加、删除的性能高
这里涉及到ArrayList和LinkedList的区别?
- 根据性能方面来讲ArrayList是数组结构、而LinkedList是链表数据结构
- LinkedList就本人实际项目案例:Session购物车的添加删除使用LinkedList性能高于ArrayList
4.Set集合特点
- 无序不重复
- 只允许有一个null值
- 案例:权限模块(hibernate)
- Set实现类:
- Hashset:无序速度快
- TreeSet :排序功能
- LinkedHashSet:按添加的顺序保持元素
5.Queue特点
- 先进先出(队列)
6.Map特点
- 键值对
- 键只允许有一个null值可以有多个null
- Map的实现类
- TreeMap:有排序功能
- HashMap:的速度快
- LinkedHashMap:按添加顺序储存元素
HashMap的实现原理?
通过put和get存储和获取对象,存储对象时将键和值给put方法,用hashcode计算hash从而取得bucket位置进一步储存HashMap会根据当前bucket的占用情况调整容量(使用hash值记录位置)HashMap默认容量16个值(可以修改只能是2的n次方比如32) (扩容因子)75% 阀值 16*0.75=12
ArrayList 扩容之后是1.5倍
HashMap 扩容之后是2倍 32
以上就是本人对集合集合大概的理解