韩顺平java基础-14-集合

韩顺平java基础-14-集合

集合介绍#

理解#

好处

框架体系图

主要有两组

Collection(单列集合)\Map(双列集合)


Collection#

Collection通用#

方法#

遍历#

迭代器遍历

iterator 底层原理:

hasNext()

快捷键:ctrl + j

增强for循环

本质仍然是iterator

在集合和数组中均可以使用


List#

通用#

接口

  1. 添加顺序与取出顺序一致,且可以重复
  2. 每个元素都有对应的顺序索引,且可以通过索引取出

常用方法

三种遍历

  1. iterator迭代器遍历
  2. 增强for循环
  3. 普通for循环(把list当作普通数组遍历)

LinkedList、Vector原理同List一致


ArrayList#

扩容机制#

  1. 无参构造器 初始大小为10 而后扩容为1.5倍
  2. 指定大小构造器 扩容为1.5倍

底层源码#


Vector#

扩容机制#

  1. 无参构造器 初始大小为10 而后扩容为2倍
  2. 指定大小构造器 扩容为2倍

LinkedList#

底层结构#

  1. 底层是双向链表
  2. 维护两个属性 first和last 分别指向 首节点和尾节点
  3. 每个结点(Node),里面维护了prev、next、item三个属性
  4. LinkedList的添加和删除,不是通过数组实现,相对来说效率较高

ArrayList和LinkedList的比较#

  1. ArrayList改查效率高
  2. LinkedList增删效率高
  3. 也可以根据业务灵活选择

Set#

通用#


HashSet#

特点

  1. HashSet实现了Set接口,实际上是HashMap

  2. 可以存放null,但是只能有一个null

  3. 不保证元素是有序的

  4. 不能有重复元素

不能添加相同的元素 说明:

HashSet的底层机制

HashSet的底层是HashMap,HashMap的底层是(数组 + 链表 + 红黑树)

HashSet扩容机制

每向hashset增加一个元素,数组就会加一


LinkedHashSet#

基础#

  1. LinkedHashSet是HashSet的子类
  2. 维护了一个hash表和双向链表,在遍历时可以确保插入顺序和遍历顺序一致
  3. LinkedHashSet有head和tail,每一个节点有before和after属性,形成双向链表

源码分析#

  1. LinkedHashSet底层维护的是LinkedHashMap
  2. LinkedHashMap$Entry 继承--> HashMap$Node

Map#

接口特点#

  1. Map与Collection并列存在,保存具有映射关系的数据:key - Value(双列元素)Collection中value存放常量PRESENT
  2. Map中的key和value可以是任何引用类型的数据,会封装到HashMap$Node对象中
  3. Map中的key不允许重复,而value可以重复(key相当于Map中的索引,key-value是一一对应的关系,通过key就可以找到value(get()))
  4. Map的key和value可以为null
  5. 常用String类作为Map的key
posted @   forest-pan  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示
CONTENTS