Java集合类概述

什么是集合类

  • Java集合类是Java标准库中用于存储和操作一组对象的类和接口。集合类提供了一种灵活的方式来管理和操作数据,支持多种数据结构,如列表、集合、映射等。
  • 简单来说,集合指的是存放数据的容器,可以一次容纳多个对象,并且允许用户通过一些方法来访问和操作这些对象。
     

主要组成部分

  1. 接口:定义了集合的基本操作。
  2. 实现类:提供了接口的具体操作。
  3. 算法:提供了对集合进行操作的方法,如排序、查找等。
     

集合类的分类(Collection和Map)

  Java中的集合类可以分为两大类:一类是实现Collection接口;另一类是实现Map接口

  Collection是一个基本的集合接口,Collection中可以容纳一组集合元素。Collection是高度抽象出来的接口,JDK 不提供此接口的任何直接实现,而是提供更具体的子接口(如:Set 和 List)去实现。

  Map没有继承Collection接口,与Collection是并列关系。Map提供键(key)到值(value)的映射。一个Map中不能包含相同的键,每个键只能映射一个值。
 

Collection接口

常用API

API描述
boolean add(E e)添加一个元素进入Collection
boolean addAll(Collection<? extends E> c)添加一个Collection进目标Collection
boolean remove(Object o)删除元素,只删除第一个出现的(如果存在多个)
boolean removeAll(Collection<?> c)删除Collection中的所有存在的元素
boolean contains(Object o)判断是否存在指定元素
boolean containsAll(Collection<?> c)判断给定的collection中是否全部存在于目标Collection
boolean retainAll(Collection<?> c)retainAll() 方法用于保留 arraylist 中在指定集合中也存在的那些元素。
void clear()清空collection
boolean equals(Object o)判断是否相等
int hashCode()计算hashCode
boolean isEmpty()判断是否为空
int size()返回collection中的元素个数
Object[] toArray()将collection转成一个数组,方便遍历
T[] toArray(T[] a)同上,只是传入了一个数组
Iterator iterator()返回一个迭代器
foreachfor循环遍历(底层也是iterator)

 

常见子接口

List、Set、Queue是Collection的子接口,具备Collection的所有方法

List
  • 数据结构为线性表
特点ArrayListVectorLinkedList
存储元素有序
可以存储重复元素
底层结构数组数组双向链表
可以存储null值
线程安全××
Set
  • 数据结构为集合
特点HashSetTreeSetLinkedHashSet
存储元素有序×
可以存储重复元素×××
内部HashMapTreeMap的SortedSetLinkedHashMap
底层结构Hash表二叉树Hash表存储,双向链表记录插入顺序
可以存储null值×
线程安全×××
Queue
  • 数据结构为队列
特点LinkedListArrayDequeLinkedBlockingQueuePriorityBlockingQueue
存储元素有序按优先级
可以存储重复元素
可以存储null值×××
数据结构双向链表可扩容循环数组链表二叉堆
线程安全××
典型应用场景需要null值或双向遍历的场景高频插入删除的场景,替代Stack线程池任务队列带优先级的任务调度

 

Map接口

常用API

API描述
V put(K key, V value)添加键值对, 若键值存在,则为更新操作
void putAll(Map<? extends K,? extends V> m)将参数map中所有键值对放入该map
V get(Object key)根据key值获取value,若key值不存在,则返回null
V remove(Object key)删除map中所包含的参数key
boolean containsKey(Object key)判断map中是否包含参数key
boolean containsValue(Object value)判断map中是否包含参数value
void clear()清空map
boolean equals(Object o)判断两个map是否相等
int hashCode()返回此映射的哈希码值
boolean isEmpty()判断map中是否有元素
int size()返回键-值映射关系数
Set<Map.Entry<K,V>> entrySet()返回此映射中包含的映射关系的 Set 视图
Set< K >  keySet()返回此映射中包含的键的 Set 视图
Collection< V > values()返回此映射中包含的值的 Collection 视图

常见子接口

特点HashMapLinkedHashMapTreeMapHashtableConcurrentHashMap
底层结构数组+链表+红黑树(JDK8+)哈希表+双向链表红黑树数组+链表数组+链表/红黑树(JDK8+)
存储有序性无序插入顺序/访问顺序key自然排序/自定义无序无序
允许重复 键/值× / √× / √× / √× / √× / √
允许null 键/值√ / √√ / √× / √× / ×× / √
线程安全×××
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值