it编程 > 编程语言 > Java

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

14人参与 2026-08-03 Java

前言

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)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

您想发表意见!!点此发布评论

推荐阅读

SpringBoot接口参数接收指南:从URL到请求体,4种方式一次掌握

08-03

SpringBoot拦截器怎么用?从入门到多拦截器链式调用详解

08-03

java运行排错,新码旧jar问题及解决

08-03

Java异常处理怎么学?一文详解try catch finally使用技巧

08-03

java comparable接口怎么用?内部比较器用法详解

08-03

Spring Boot中拦截器与过滤器的使用场景和区别详解

08-03

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论