集合容器

集合容器

1.常用集合List、Set、Map

    List、Set为一个分支Map为另外一个分支(如上图)List、Set  继承Collection、而Collection继承Iterable

2.Iterable

    所有集合的的父类 、实现所有Iterable的类都可以有:

  •  增强for循环(foreach)
  •   iterator()迭代器:
  1. hasNext():是否存在下一项
  2. next():下一项
  3. remove():删除由next()返回的最新项

这里就提到Collection和iterator的remove方法区别?

  1. 性能方面:iterator必须结合next()使用,隔一项删除一项。而Collection底层是链表结构先找到下标再移除使用性能低
  2. 容错:iterator遍历使用Collection的remove会因为对象个数改变不一致而出现异常,而iterator内部对象个数和原来集合对象个数会保持一致

3.List集合特点

  • 有序可重复
  • List的实现类:
  1. ArrayList:查询速度快、添加、删除的性能低
  2. LinkedList:查询性能低、添加、删除的性能高

这里涉及到ArrayList和LinkedList的区别?

  • 根据性能方面来讲ArrayList是数组结构、而LinkedList是链表数据结构
  • LinkedList就本人实际项目案例:Session购物车的添加删除使用LinkedList性能高于ArrayList
     

4.Set集合特点

  • 无序不重复
  • 只允许有一个null值
  • 案例:权限模块(hibernate)
  • Set实现类:
  1. Hashset:无序速度快
  2. TreeSet :排序功能
  3. LinkedHashSet:按添加的顺序保持元素

5.Queue特点

  • 先进先出(队列)

6.Map特点

  • 键值对
  • 键只允许有一个null值可以有多个null
  • Map的实现类
  1. TreeMap:有排序功能
  2. HashMap:的速度快
  3. 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

以上就是本人对集合集合大概的理解