JAVA的常用集合

在这里插入图片描述

集合主要是两组(单列集合(Conllection) , 双列集合(Map))

一.Conllection集合

Collection 接口有两个重要的子接口 List和Set , 他们的实现子类都是单列集合

1. List(有序,可重复)

遍历方式:

  • 可以使用迭代器
  • 增强for循环
  • 能使用索引方式获取

(1)Arraylist:

  • 默认初始容量为10
  • 线程不安全,查询速度快
  • 底层数据结构是数组
  • 扩容增量:原容量的 0.5倍
  • 改查效率高,增删效率低
  • 可以添加任意元素(可重复),包括null

如 ArrayList的容量为10,一次扩容后是容量为15

(2)Vector:

  • 默认初始容量为10
  • 线程安全,但速度慢
  • 底层数据结构是数组
  • 加载因子为1:即当 元素个数 超过 容量长度 时,进行扩容
  • 扩容增量:原容量的 1倍
  • 改查效率高,增删效率低
  • 可以添加任意元素(可重复),包括null

如 Vector的容量为10,一次扩容后是容量为20

(3)LinkedList:

  • 改查效率低,增删效率高
  • 线程不安全,没有实现同步
  • 底层数据结构时双向链表
  • 可以添加任意元素(可重复),包括null

2. Set(有些有序,有些无序,不重复)

遍历方式:

  • 可以使用迭代器
  • 增强for循环
  • 不能使用索引方式获取

(1)TreeSet(有序不重复):

  • 底层是红黑树
  • TreeSet中存储的类型必须是一致的,不能一下存int,一下又存string
  • 可以排序,两种方式 1.自然排序(元素具备比较性) 让元素所属的类实现Comparable接口 。2.比较器排序(集合具备比较性) 让集合接收一个Comparator的实现类对象

(2)HashSet(无序不重复):

  • 可以存放null值,但只能一个
  • 底层数据结构是数组+链表+红黑树。哈希表依赖两个方法:hashCode()和equals()
  • 线程不安全,存取速度快
  • 底层实现是一个HashMap(保存数据)
  • 默认初始容量为16
  • 加载因子为0.75:即当元素个数超过容量长度的0.75倍 时,进行扩容
  • 扩容增量:原容量的 1 倍
  • 当一条链表上的元素到达8个,并且table到达64时,会进行红黑树转换

如 HashSet的容量为16,一次扩容后是容量为32

(3)LinkedHashSet(有序不重复):

  • 底层是双向链表和哈希表
  • 底层实现是LinkedHashMap

二.Map集合

Map 接口的实现子类 是双列集合,存放的 K-V

1. TreeMap(有序的):

  • 底层是红黑树,自然平衡二叉树
  • 可以排序,两种方式 1.自然排序(元素具备比较性) 让元素所属的类实现Comparable接口 。2.比较器排序(集合具备比较性) 让集合接收一个Comparator的实现类对象

2. HashMap(无序的):

  • key不能重复,value可以重复,允许使用null
  • 底层数据结构是数组+链表+红黑树。哈希表依赖两个方法:hashCode()和equals()
  • 线程不安全,存取速度快
  • 默认初始容量为16
  • 加载因子为0.75:即当元素个数超过容量长度的0.75倍 时,进行扩容
  • 扩容增量:原容量的 1 倍
  • 当一条链表上的元素到达8个,并且table到达64时,会进行红黑树转换

如 HashSet的容量为16,一次扩容后是容量为32

3. Hashtable(无序的):

  • key和value都不允许null值
  • 线程安全,效率较低
  • 底层使用Entry数组保存元素
  • 默认初始容量是11
  • 加载因子是0.75:即当元素个数超过容量长度的0.75倍 时,进行扩容
  • 扩容增量:原容量的 1 倍加1

如 Hashtable的容量为11,一次扩容后是容量为23

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值