java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java集合框架常用API有哪些

Java集合框架常用API有哪些?List、Set、Map方法大全

作者:碎碎念...

还在为记不住Java集合的常用方法发愁?本文帮你系统梳理了List、Set、Map、Queue等核心接口的常用API及时间复杂度,涵盖ArrayList、LinkedList、HashMap、TreeSet等实现类,让你快速找到增删改查的正确用法,提升开发效率

前言

1. 本文主要介绍 Java 标准库中 java.util 包下的集合框架,不涉及 java.util.concurrent(JUC)包中的并发集合类。

2. 文章侧重于常用集合类及其常用 API 的整理与总结,旨在为日常开发提供查阅参考,不涉及底层原理或面试相关问题的深入探讨。

集合框架概述

图 1:Java 集合框架结构图(图源自 Java Guide)

Java 中的集合(也称为容器)框架主要由两大核心接口组成:

其中,Collection 是最基础的集合接口,根据元素的组织方式又衍生出以下三种常用子接口:

List

Set

Queue

Map 接口则用于保存键值对(key-value)结构的数据:

注:集合框架中的一些接口(如 SortedSetDequeSortedMap)并不常在项目中直接使用,但它们是一些重要实现类(如 TreeSetArrayDequeTreeMap)的核心接口,理解这些结构有助于掌握集合的使用与底层行为。

List 接口常用 API

List 接口表示有序、可重复的元素集合,支持通过索引访问元素。

常见实现类有:

常用方法汇总

方法名说明返回值时间复杂度
add(E e)向列表尾部添加元素booleanArrayList: O(1) 均摊;LinkedList: O(1)
add(int index, E e)在指定位置插入元素voidO(n)
get(int index)获取指定索引位置的元素EArrayList: O(1);LinkedList: O(n)
set(int index, E e)替换指定索引位置的元素EArrayList: O(1);LinkedList: O(n)
remove(int index)移除指定索引处的元素EO(n)
remove(Object o)移除首次出现的指定元素booleanO(n)
contains(Object o)判断是否包含指定元素booleanO(n)
indexOf(Object o)返回首次出现的索引intO(n)
lastIndexOf(Object o)返回最后一次出现的索引intO(n)
size()返回列表中的元素个数intO(1)
isEmpty()判断列表是否为空booleanO(1)
clear()清空所有元素voidO(n)
toArray()转为数组Object[]O(n)

Set 接口常用 API

Set 接口表示不允许包含重复元素的集合,主要用于保证元素的唯一性。

常见实现类有:

常用方法汇总

方法名说明返回值时间复杂度
add(E e)添加元素booleanO(1) 均摊
remove(Object o)移除指定元素booleanO(1) 均摊
contains(Object o)判断是否包含指定元素booleanO(1) 均摊
size()返回集合中的元素个数intO(1)
isEmpty()判断集合是否为空booleanO(1)
clear()清空所有元素voidO(n)
iterator()返回迭代器Iterator<E>O(1)
toArray()转为数组Object[]O(n)

注:TreeSet 也是 Set 接口的实现类,时间复杂度的分析将在 SortedSet 部分介绍。

Queue 接口常用 API

Queue 接口表示一个**先进先出(FIFO)**的集合,常用于按队列方式管理元素。

常见实现类有:

常用方法汇总

方法名说明返回值时间复杂度
add(E e)添加元素(失败抛异常)booleanO(1)
offer(E e)添加元素(失败返回 false)booleanO(1)
remove()移除并返回队头元素(队空抛异常)EO(1)
poll()移除并返回队头元素(队空返回 null)EO(1)
element()查看队头元素(队空抛异常)EO(1)
peek()查看队头元素(队空返回 null)EO(1)
isEmpty()判断队列是否为空booleanO(1)
size()返回队列中元素个数intO(1)
clear()清空队列所有元素voidO(n)

注:PriorityQueue 也实现了 Queue 接口,但其底层为最小堆,相关操作如 addofferpollpeek 的时间复杂度均为 O(log n)。

Map 接口常用 API

Map 接口用于存储键值对(key-value),每个 key 对应一个 value,且 key 不允许重复。常用于查找、映射和数据缓存等场景。

常见实现类包括:

常用方法汇总

方法名说明返回值时间复杂度
put(K key, V value)添加或更新键值对VO(1) 均摊
get(Object key)获取指定 key 对应的 valueVO(1) 均摊
remove(Object key)移除指定 key 的映射关系VO(1) 均摊
containsKey(Object key)判断是否包含指定 keybooleanO(1) 均摊
containsValue(Object v)判断是否包含指定 valuebooleanO(n)
size()返回映射关系对数(键值对个数)intO(1)
isEmpty()判断是否为空booleanO(1)
clear()清空所有键值对voidO(n)
keySet()返回所有 key 的集合Set<K>O(n)
values()返回所有 value 的集合Collection<V>O(n)
entrySet()返回所有键值对的集合Set<Map.Entry<K,V>>O(n)

注:TreeMap 也是 Map 接口的实现类,但由于其基于红黑树,时间复杂度不同,详见 SortedMap 部分分析。

SortedSet 接口常用 API

SortedSet 接口是 Set 的子接口,表示可排序的集合,其元素按照自然顺序或指定的比较器进行排序,常用于需要有序访问元素的场景。

常见实现类:

常用方法汇总

方法名说明返回值时间复杂度
add(E e)添加元素booleanO(log n)
remove(Object o)移除指定元素booleanO(log n)
contains(Object o)判断是否包含指定元素booleanO(log n)
first()返回集合中第一个(最小)元素EO(log n)
last()返回集合中最后一个(最大)元素EO(log n)
headSet(E toElement)返回严格小于指定元素的子集SortedSetO(log n)
tailSet(E fromElement)返回大于等于指定元素的子集SortedSetO(log n)
subSet(E from, E to)返回范围 [from, to) 的子集SortedSetO(log n)
size()返回元素个数intO(1)
isEmpty()判断集合是否为空booleanO(1)
clear()清空所有元素voidO(n)
iterator()返回按升序排列的迭代器Iterator<E>O(1)

Deque 接口常用 API

Deque(Double Ended Queue)接口表示双端队列,支持从队列两端插入和删除元素。它同时具备栈和队列的功能,是栈 (Stack) 和队列 (Queue) 的统一抽象。

常见实现类:

常用方法汇总

方法名说明返回值时间复杂度
addFirst(E e)从队头添加元素voidO(1)
addLast(E e)从队尾添加元素voidO(1)
removeFirst()移除并返回队头元素EO(1)
removeLast()移除并返回队尾元素EO(1)
getFirst()获取但不移除队头元素EO(1)
getLast()获取但不移除队尾元素EO(1)
offerFirst(E e)从队头插入元素(推荐,带返回值)booleanO(1)
offerLast(E e)从队尾插入元素(推荐,带返回值)booleanO(1)
pollFirst()移除并返回队头元素(为空返回 null)EO(1)
pollLast()移除并返回队尾元素(为空返回 null)EO(1)
peekFirst()获取但不移除队头元素(为空返回 null)EO(1)
peekLast()获取但不移除队尾元素(为空返回 null)EO(1)
isEmpty()判断是否为空booleanO(1)
size()返回元素个数intO(1)
clear()清空所有元素voidO(n)

注:建议优先使用 offerXxxpollXxxpeekXxx 这些方法,它们在队列为空或满时不会抛异常,更安全。

SortedMap 接口常用 API

SortedMap 接口继承自 Map,表示按键排序的映射表,常见实现类为 TreeMap

常用方法汇总

方法名说明返回值时间复杂度
comparator()返回用于排序的比较器,若为自然顺序则返回 nullComparator<? super K>O(1)
firstKey()返回键的第一个(最低)元素KO(log n)
lastKey()返回键的最后一个(最高)元素KO(log n)
subMap(K fromKey, K toKey)返回指定键范围的子映射SortedMap<K,V>O(log n)
headMap(K toKey)返回小于 toKey 的键的子映射SortedMap<K,V>O(log n)
tailMap(K fromKey)返回大于等于 fromKey 的键的子映射SortedMap<K,V>O(log n)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文