集合02

本文深入解析Java集合框架,包括List、ArrayList、Vector、Stack、Queue和Deque等接口及其实现类的特点与常用方法,帮助读者理解集合的底层原理和使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

List

List接口特点:

1.集合是有序的(存储有序)
2.有索引,方便查找和修改
3.List集合可重复
4.可以存储null值

常用方法

1.添加功能
void add(int index, E element) 在指定 index 索引处理插入元素 element
boolean addAll(int index, Collection<? extends E> c) 在指定 index 索引处理插入集合元素 c

2.删除功能
void clear() 清空
E remove(int index) 删除指定索引 index 处的元素

3.修改功能
E set(int index, E element) 修改指定索引 index 处的元素为 element

4.遍历功能
E get(int index) + int size() for循环遍历集合中的每一个元素
ListIterator listIterator() 通过列表迭代器遍历集合中的每一个元素
ListIterator listIterator(int index) 通过列表迭代器从指定索引处开始正向或者逆向遍历集合中的元素

5.获取集合长度的功能
int size()

6.获取功能
E get(int index) 获取指定索引处的元素
int indexOf(Object o) 从左往右查找,获取指定元素在集合中的索引,如果元素不存在返回 -1
int lastIndexOf(Object o) 从右往左查找,获取指定元素在集合中的索引,如果元素不存在返回 -1
List subList(int fromIndex, int toIndex) 截取从 fromIndex 开始到 toIndex-1 处的元素

ArrayList

List 接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。

ArrayList特点
  1. 底层数据结构是数组
  2. 增加和删除的效率低,查询和修改的效率高
  3. 能够存储 null 值
  4. 线程不安全,效率高 可以通过 Collections.synchronizedList();变安全
  5. 有索引,能够方便检索
  6. 元素可重复,我们自己可以通过 选择排序去重复
  7. 不可以排序,但是可以通过 Collections.sort();方法排序

Vector

Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。

Vector特点
  1. 底层数据结构是数组
  2. 有索引,能够方便检索
  3. 增加和删除的效率低,查询和修改的效率高
  4. 线程安全,效率低
  5. 能够存储 null 值
  6. 元素可重复
  7. 不可以排序,但是可以通过 Collections.sort();方法排序
常用方法

1.添加功能
public synchronized void addElement(E obj) 添加元素 obj 到集合中
public synchronized void insertElementAt(E obj, int index) 在指定索引 index 处插入元素 obj

2.删除功能
public synchronized void removeElementAt(int index) 移除指定索引 index 处的元素
public synchronized void removeAllElements() 移除所有元素

3.修改功能
public synchronized void setElementAt(E obj, int index) 修改指定索引 index 的元素为 obj

4.遍历功能
public synchronized E elementAt(int index) + size() for循环遍历集合中的所有元素
public synchronized Enumeration elements() 使用 Enumeration 迭代器遍历集合中的元素

5.获取功能
public synchronized E firstElement() 获取集合中的第一个元素
public synchronized E lastElement() 获取集合中的最后一个元素
public synchronized E elementAt(int index) 获取指定索引 index 的元素

Stack

Stack 类表示后进先出(LIFO)的对象堆栈。它通过五个操作对类 Vector 进行了扩展 ,允许将向量视为堆栈。它提供了通常的 pushpop 操作,以及取堆栈顶点的 peek方法、测试堆栈是否为空的 empty 方法、在堆栈中查找项并确定到堆栈顶距离的 search方法。

特点

  1. 基于栈结构的集合,先进后出
  2. Stack 类是 Vector类的子类,所以该类也是线程安全的,效率低。
常用方法

E push(E item) 将元素压入栈底
E pop() 将元素从栈结构中弹出,并作为此函数的值返回该对象,此方法会影响栈结构的大小
E peek() 查看堆栈顶部的对象,但不从栈中移除它。
boolean empty() 测试栈是否为空。
int search(Object o) 返回对象在栈中的位置,以 1 为基数。

Queue

特点

  1. 该接口是队列接口的根接口,先进先出
  2. 该接口提供队列相关两种形式的方法,一种抛出异常(操作失败时),另一种返回一个特殊值(null
    false,具体取决于操作)。插入操作的后一种形式是用于专门为有容量限制的 Queue 实现设计的;在大多数实现中,插入操作不会失败。

常用方法
在这里插入图片描述

Deque

Deque特点
  1. Deque是一个Queue的子接口,是一个双端队列,支持在两端插入和移除元素
  2. deque支持索引值直接存取。
  3. Deque头部和尾部添加或移除元素都非常快速。但是在中部安插元素或移除元素比较费时。
  4. 插入、删除、获取操作支持两种形式:快速失败和返回nulltrue/false
  5. 不推荐插入null元素,null作为特定返回值表示队列为空
常用方法

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值