码迷,mamicode.com
首页 > 编程语言 > 详细

Java中常用集合效率比较

时间:2019-01-11 13:13:03      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:link   链式存储   结果   元素   collect   键值对   链表   off   key   

一 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),还是挺诱人的,所以推荐此种遍历方式。

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

Java中常用集合效率比较

标签:link   链式存储   结果   元素   collect   键值对   链表   off   key   

原文地址:https://www.cnblogs.com/jameszheng/p/10254442.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!