java效率比较_Java中常用集合效率比较

本文详细介绍了Java集合框架中List、Set、Map的主要实现类及它们的特点,并对比了不同集合类在使用场景上的优劣,包括ArrayList、LinkedList、HashSet、TreeSet、HashMap等,最后讨论了各种集合类的迭代方式。

一 List

List继承collection,有序,元素可重复。

实现类:

ArrayList,数组方式实现的,是线程不安全的;Vector 是线程安全的;LinkedList 是线程不安全的,底层是由链表实现的 。

ArrayList与LinkedList在效率上有些互补,LinkedList进行插入和删除操作的速度是最快的,访问较慢,ArrayList进行随机访问的速度很快,插入较慢;

二 Set

Set继承collection,元素不能重复。

实现类:

HashSet,常用的set实现类,

LinkedHashSet,具有 HashSet 的查询速度,且内部使用链表维护元素的顺序 ( 插入的次序 ) 。于是在使用迭代器遍历 Set 时,结果会按元素插入的次序显示。

TreeSet,保存次序的 Set, 底层为树结构。

在插入、查找方面,HashSet 通常优于TreeSet. hashSet查询和删除和增加元素的效率都非常高.

三 Map

键值对的形式

实现类:

HashMap,线程不安全,key和value都能为空

Hashtable,线程安全,key和value都不能为空

LinkedHashMap ,类似于 HashMap ,但是迭代遍历它时,取得“键值对”的顺序是其插入次序,只比 HashMap 慢一点。而在迭代访问时发而更快。

四 迭代方式

1 传统的for循环遍历,基于计数器的:

顺序存储:读取性能比较高。适用于遍历顺序存储集合。

链式存储:时间复杂度太大,不适用于遍历链式存储的集合。

2.迭代器遍历,Iterator:

顺序存储:如果不是太在意时间,推荐选择此方式,毕竟代码更加简洁,也防止了Off-By-One的问题。

链式存储:意义就重大了,平均时间复杂度降为O(n),还是挺诱人的,所以推荐此种遍历方式。

在使用时,根据自己的需求选择合适的集合。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值