Java中List,Set,Map三者的区别

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

1.了解List,Set,Map

List:有序不唯一列表。

Set:有序唯一列表。

Map:键值对集合,键不可重复,值可以重复

2.数据结构与存储方式

List:是有序集合(元素存入顺序与取出顺序一致),允许重复元素,可以通过索引(下标) 访问元素(类似数组)。常见实现类:ArrayList(数组实现,查询快、增删慢)、LinkedList(链表实现,增删快、查询慢)、Vector(线程安全,效率低)。

Set:无序集合(元素存入顺序与取出顺序不一定一致,LinkedHashSet 除外),不允许重复元素(通过 equals() 和 hashCode() 判断唯一性),无索引,不能通过下标访问。常见实现类:HashSet(哈希表实现,无序)、LinkedHashSet(哈希表 + 链表,有序)、TreeSet(红黑树实现,元素可排序)。

Map:键值对(Key-Value)映射集合,存储的是 “键” 和 “值” 的关联关系,键(Key)不允许重复(类似 Set 的特性),值(Value)可以重复。键和值是一一对应关系,通过键可以快速查找值,无索引。常见实现类:HashMap(哈希表实现,无序)、LinkedHashMap(哈希表 + 链表,有序)、TreeMap(红黑树实现,键可排序)、Hashtable(线程安全,效率低)。

3.常用集合及区别

常用集合
ListsetMap

ArrayList

基于动态数组实现,支持随

机访问。

TreSet

基于红黑树实现,支持有序

操作

TreeMap

基于红黑树实现

Vector

和ArrayList类似,但它是线

程安全的

HashSet

基于哈希表实现,支持快速查

找,但不支持有序性操作

HashMap

基于哈希表实现

HashTable

和HashMap类似,但它是线

程安全的

LinkedList

基于双向列表实现,只能顺

序访问

LinkedHashSet

具有HashSet的查找效率,

且内部使用双向链表维护元

素的插入顺序

LinkedHashMap

使用双向链表来维护元素的

顺序,顺序为插入顺序或最

近最少是用(LRU)顺序

 

4. 核心特性对比

特性ListSetMap
元素形式单个对象单个对象键值对(Key-Value)
有序性有序(存入顺序一致)无序(LinkedHashSet 除外)无序(LinkedHashMap 除外)
重复性允许重复元素不允许重复元素键不重复,值可重复
索引访问支持(通过下标)不支持不支持(通过键访问值)
核心方法add()get(index)remove(index) 等add()contains()remove() 等put(key, v

5. 使用场景

List:适合需要按顺序存储、允许重复、频繁查询的场景,例如:存储用户列表、订单记录等。

Set:适合需要去重、无需顺序的场景,例如:存储唯一标识(ID、用户名)、过滤重复数据等。

Map:适合需要通过键快速查找值的场景,例如:存储配置信息(键为配置项名,值为配置值)、缓存数据等。

6. 总结

简单说,List 管 “顺序和重复”,Set 管 “去重”,Map 管 “键值对应”—— 根据数据的特性选对容器,代码会更高效、更贴合需求。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值