当前位置: 首页 > news >正文

认识集合框架

Java 集合框架 Java Collection Framework ,又被称为容器container,是定义在 java.util 包下的一组接口 interfaces和其实现类 classes 

Java集合框架主要由三部分组成:

1.接口(Interfaces):表示集合的抽象数据类型。允许集合独立于其实现细节进行操作。
2.实现类(Implementations):接口的具体实现,即可重用的数据结构。
3.算法(Algorithms):对实现了集合接口的对象进行操作的方法,如搜索和排序。

类和接口总览

1. Collection:是一个接口,包含了大部分容器常用的一些方法

2. List:是一个接口,规范了ArrayList 和 LinkedList中要实现的方法

        ArrayList:实现了List接口,底层为动态类型顺序表

        LinkedList:实现了List接口,底层为双向链表

3. Stack:底层是栈,栈是一种特殊的顺序表

4. Queue:底层是队列,队列是一种特殊的顺序表

5. Deque:是一个接口,可以用来实现双端队列

6. Set:集合,是一个接口,里面放置的是K模型

        HashSet:底层为哈希桶,查询的时间复杂度为O(1)

        TreeSet:底层为红黑树,查询的时间复杂度为O(logN)

7. Map:映射,里面存储的是K-V模型的键值对

        HashMap:底层为哈希桶,查询时间复杂度为O(1),关于key有序的

        TreeMap:底层为红黑树,查询的时间复杂度为O(logN),关于key有序

Collection接口

Collection是集合层次结构的根接口,所有集合类都实现了这个接口。它提供了适用于所有集合的基本操作。

主要方法:

boolean add(E e) - 添加元素
boolean remove(Object o) - 移除元素
boolean contains(Object o) - 检查是否包含指定元素
int size() - 返回集合中的元素数量
boolean isEmpty() - 检查集合是否为空
Iterator<E> iterator() - 返回迭代器
void clear() - 清空集合
boolean containsAll(Collection<?> c) - 检查是否包含另一个集合的所有元素
boolean addAll(Collection<? extends E> c) - 添加另一个集合的所有元素
boolean removeAll(Collection<?> c) - 移除同时存在于指定集合中的所有元素
boolean retainAll(Collection<?> c) - 仅保留同时存在于指定集合中的元素
Object[] toArray() - 返回包含集合中所有元素的数组

List接口

List是一个有序的Collection,用户可以通过索引访问元素,并且允许重复元素。

特点:有序(插入顺序,允许重复元素,可以通过索引访问元素

主要方法:

E get(int index) - 获取指定位置的元素
E set(int index, E element) - 替换指定位置的元素
void add(int index, E element) - 在指定位置插入元素
E remove(int index) - 移除指定位置的元素
int indexOf(Object o) - 返回指定元素第一次出现的索引
int lastIndexOf(Object o) - 返回指定元素最后一次出现的索引
List<E> subList(int fromIndex, int toIndex) - 返回指定范围内的子列表

Stack接口

Stack 类是一个后进先出(LIFO, Last In First Out)的数据结构,它继承自 Vector 类。尽管 Stack 是一个可用的类,但它被认为是遗留的,并且在新代码中不推荐使用。通常建议使用 Deque 或 ArrayDeque 作为替代。

主要方法:

push(E item):将一个元素压入栈顶。
pop():从栈顶移除一个元素并返回它;如果栈为空,则抛出 EmptyStackException。
peek():查看栈顶的元素但不移除它;如果栈为空,则抛出 EmptyStackException。
search(Object o):返回对象在栈中的位置,即自上而下的索引,如果对象不在栈中则返回 -1。
empty():如果栈为空,则返回 true。

Queue接口

Queue代表了先进先出(FIFO)的数据结构,除了基本的Collection操作外,还提供了额外的插入、提取和检查操作。

主要方法:

boolean offer(E e) - 将元素添加到队列(不抛出异常)
E poll() - 获取并移除队首元素,如果队列为空则返回null
E peek() - 获取但不移除队首元素,如果队列为空则返回null
E element() - 获取但不移除队首元素,如果队列为空则抛出异常
E remove() - 获取并移除队首元素,如果队列为空则抛出异常

Deque接口

Deque(双端队列)是Queue的子接口,允许在两端进行插入和删除操作。

主要方法:

void addFirst(E e) / void addLast(E e) - 在队列前端/后端添加元素
E removeFirst() / E removeLast() - 移除并返回队列前端/后端的元素
E getFirst() / E getLast() - 获取但不移除队列前端/后端的元素
boolean offerFirst(E e) / boolean offerLast(E e) - 在队列前端/后端添加元素(不抛出异常)
E pollFirst() / E pollLast() - 获取并移除队列前端/后端的元素,如果队列为空则返回null
E peekFirst() / E peekLast() - 获取但不移除队列前端/后端的元素,如果队列为空则返回null

 Set接口

Set是一个不包含重复元素的Collection

特点:不允许重复元素、大多数实现类不保证元素的顺序、有些实现类可能保证特定的顺序(如LinkedHashSet维护插入顺序)

Map接口

Map将键映射到值,不能包含重复的键,每个键最多映射到一个值。

主要方法:

V put(K key, V value) - 添加键值对
V get(Object key) - 获取指定键对应的值
V remove(Object key) - 移除指定键对应的值
boolean containsKey(Object key) - 检查是否包含指定键
boolean containsValue(Object value) - 检查是否包含指定值
Set<K> keySet() - 返回包含所有键的Set
Collection<V> values() - 返回包含所有值的Collection
Set<Map.Entry<K, V>> entrySet() - 返回包含所有键值对的Set
int size() - 返回键值对的数量
boolean isEmpty() - 检查Map是否为空
void clear() - 清空Map


文章转载自:

http://z7KjzMSO.Lxmmx.cn
http://BKWRDx2c.Lxmmx.cn
http://qYYY7Dvl.Lxmmx.cn
http://bodB82mB.Lxmmx.cn
http://O9CCCyb8.Lxmmx.cn
http://M9VREdFy.Lxmmx.cn
http://7iFcoD9n.Lxmmx.cn
http://qvTMKApv.Lxmmx.cn
http://Wgz7diYJ.Lxmmx.cn
http://zwjd4Mc7.Lxmmx.cn
http://va0M8jDI.Lxmmx.cn
http://KS0smQQJ.Lxmmx.cn
http://kCyaC19Q.Lxmmx.cn
http://ZfQedZZe.Lxmmx.cn
http://zf13Sd9S.Lxmmx.cn
http://0Tues1NK.Lxmmx.cn
http://Sr4eIId5.Lxmmx.cn
http://hGQLJnq7.Lxmmx.cn
http://yK3clp4r.Lxmmx.cn
http://Amwmmkpo.Lxmmx.cn
http://YtFPU0C2.Lxmmx.cn
http://607k27yN.Lxmmx.cn
http://FHW6PfFK.Lxmmx.cn
http://qOfBhI8a.Lxmmx.cn
http://sAQijUsb.Lxmmx.cn
http://PV8O6yw6.Lxmmx.cn
http://dqVPDbgW.Lxmmx.cn
http://2j0EZLx4.Lxmmx.cn
http://Cxe0YtHy.Lxmmx.cn
http://BzeKJqxS.Lxmmx.cn
http://www.dtcms.com/a/383601.html

相关文章:

  • DMA 控制器核心组件作用与使用解读
  • 卫星通信天线的指向精度,含义、测量和计算
  • [数据结构——Lesson11排序的概念及直接插入排序(还可以)]
  • VTK基础(03):VTK中数据的读和写
  • Spring AI(五) 文生图,图生图(豆包)
  • 数据分析需要掌握的数学知识(易理解)
  • 正则表达式详解:从基础到扩展的全面指南
  • 数据分析:排序
  • C语言---循环结构
  • 【底层机制】emplace_back 为什么引入?是什么?怎么实现的?怎么正确用?
  • 基于LSTM深度学习的电动汽车电池荷电状态(SOC)预测
  • 机器学习周报十三
  • 记录word插入文字/图片,生成新word并转为pdf
  • 【ROS2】Concept(Basic)
  • Level Set(水平集)算法——形象化讲解
  • 45.sed,awk详解及相关案例
  • 聊一下贪心算法
  • 磁共振成像原理(理论)7:射频回波 (RF Echoes)-双脉冲回波
  • Python实战:实现监测抖音主播是否开播并录屏
  • MySQL中InnoDB索引使用与底层原理
  • 全网首款数学建模交互AI应用-持续更新
  • 飞牛NAS本地挂载夸克网盘、接入飞牛影视教程
  • 音视频学习(六十五):fmp4
  • 【STM32】串口的阻塞、中断、DMA收发
  • win10系统 文件夹被占用无法删除
  • LawGPT:基于中文法律知识的大模型
  • 手搓多模态-10 旋转位置编码的原理和实现
  • C# --- dispose机制与using关键字
  • HakcMyVM-Aurora
  • Flask学习笔记(一)