Java容器

Java里的容器默认指的是: 集合,可以存储对象

集合分类两大类 :
Collection为顶层接口的单列集合
Map为顶层接口的双列集合
(它们都实现了Iterable接口:迭代器,方便遍历集合)

单列集合

常用的有: ArrayList、HashSet。
了解的有:LinkedList、LinkedHashSet。

ArrayList

ArrayList底层原理: 底层使用object[]数组进行存储,有默认容量,每次添加元素时检察容量,当容量不够的时候,会使用 System.arraycopy() 的方法将原数组复制并创建一个原数组一倍的新数组,将原数组数据插入新数组后赋值给原数组,新数组置为 null,等待回收。

特点: 可以存入 null 值、元素可以重复、存储时可以确保顺序、线程不安全,相较于LInkedList改查效率较为高效。

LinkedList

与 ArrayList 的区别在于,LinkedList 的 底层实现 是基于 一个双向链表
里面包含了大量 操作首位元素的方法(要使用这些特定的方法,就不能使用多态)
同样也是线程不安全
特点:相比ArrayList增删效率较为高效。

HashSet

HashSet底层原理: 基于HashMap实现,将数据存储在 HashMap的key中,value被定义默认定义为null,因为是基于HashMap实现所以该集合
特点:元素不可重复,可以存一个null值,不保证排列顺序。

LinkedHashSet

继承自 HashSet,重写了父类的方法实现构建双向链表结构,使得我们插入数据时能保证元素顺序
特点:元素不可重复,可以保证元素排列顺序。

双列集合

常用的: HashMap

HashMap

底层实现为:数组 + 链表(jdk1.8之前)
根据 要插入元素的 key 值,计算 hash码,根据 hash码,获取该key在 数组中的位置,如果hash码相同,则会 使用 equals() 比较内容,如果内容也相同,就认为两个key相同,把value 覆盖,否则,挂在已存在的 元素的下面,成为链式。
jdk1.8之后:数组 + 链表 + 红黑树
同上之后,如果 链表下挂在的元素个数超过 8个 则转换为 红黑树(当hashmap容量大于64时),当红黑树中元素的少于6个时则转换为链表
特点是:无序、key唯一不可重复。

LinkedHashMap

特点:有序,key唯一不可重复。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值