java collections framework -----List,Set,Map总结

本文深入探讨了Java集合框架中的List, Set, Map的存储结构及其特点,详细解释了它们之间的区别,并提供如何在实际应用中选择合适的数据结构的建议。

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

在jdk提供的List,Set,Map实现中,Set类型依赖于Map的存储方式,Map对象采用树形结构以及哈希(散列表)结构存储;List对象则依赖于数组和链表结构。



类型 实现类 存储结构

List ArrayList 数组

LinkedList 链表

Set HashSet 哈希(散列)表

TreeSet 树形结构

Map HashMap 哈希(散列)表

TreeMap 树形结构



List类型存放的数据不要求唯一,即在List中的数据可以有多个数据是相同的,即list.get(i).equals(list.get(j))=true(i!=j).

Set类型存放的数据必须是唯一的,即在List中不可能存在多个数据相同的情况,如果存放相同的数据进入Set类型中,后一个数据将覆盖前一个数据。

Map采用的是K-V的存放方式,在Map对象中,Key是不允许重复,如果重复,后一个key覆盖前个key,但是Value是可以重复的。



在工作当中如何选用相应的数据对象可根据数据存储的需求做出选择。如存储数据可能有重复的数据,那么就不能选择set的存储方式,而采用Map或者List。



当然List,Set,Map在存放数据时都有优点和缺点。

实现类 存储结构 优点 缺点

ArrayList 数组 能够快速的查询,插入少量数据。 插入大量数据以及移除数据时性能较低。



LinkedList 链表 能够快速的插入,移除 查询数据时性能不及ArrayList



HashSet 哈希 在存储数据过程中性能都比较理想 哈希是存在数据冲突的情况,这中情况

虽然少见但存放大量数据时时不可避免

在初始化时如果不设定容量大小,默认

大小为2的30次方,浪费空间,如果设

定大小,又需要用户估计数据量。



TreeSet 树形 插入,移除效率都不错 查询数据效率不及HashSet.



HashMap 同HashSet

TreeMap 同TreeSet



结后语:这段时间项目空闲期,阅读了一下常用的collections类型,感觉还不错,体会到“阅读源代码确实是提高代码质量的最佳方法”,目前准备阅读一下collections框架中的排序以及Iterator接口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值