常用集合比较
2015-07-30 13:43
232 查看
java的集合就那么几种 总体为:List,Set,Map (都是接口由其子类去实现具体的方法)
-------------------------Map(键值对,键唯一)----------------------------------------------
HashMap:hash表数据接口
1、非synchronized,可以通过Collections.synchronizedMap(hashMap)实现synchronized,返回一个封装了底层方法的因此同步的Map;
2、key或valye都可接收null,因此无key或key为null,则get()可能返回null,必须使用containsKey判断是否存在key;
3、只适用单线程,效率高;
TreeMap:二叉树数据结构
1、非synchronized;
2、key不可接收null,value可接收null;
3、可按照key进行排序;
3、只使用单线程;
HashTable:hash表数据接口
1、synchronized,每次读写,都会锁住整个结构;
2、key或valye都不可接收null;
3、多线程,效率较低;
ConcurrentHashMap:key-value
1、synchronized,将hash表默认拆分16个桶,每次get、put、remove操作只锁当前桶。写线程锁粒度细,读线程几乎不用锁,读写分离,速度快,只有size才会锁住整张hash表;
2、key或valye都不可接收null;
3、多线程,效率相对高;
-------------------------Set(value,无序,不可重复,非synchronized)---------------------------------------------------------------------
HashSet:非synchronized,哈希表数据结构,根据hashCode和equals方法来确定元素的唯一性;
TreeSet:非synchronized,二叉树数据结构,可按照元素排序,默认自然循序,也可使用Comparable自定义排序;
-------------------------List(value,有顺序,可重复,因为每个元素有单独索引)--------------------
ArrayList:非synchronized,数组数据结构;查询很快,增/删稍微慢点;
LinkedList:synchronized,数组数据结构,FIFO;
Vector:非synchronized,链表数据结构;查询慢,增/删很快;
相关文章推荐
- [转]vi与vim的区别
- tableView的一些基本方法
- VC学习笔记4状态栏
- *Delphi容器类之---Tlist,TStringlist,THashedStringlist的效率比较
- 二叉堆 之 Java的实现
- StringUtil
- android开发之Bundle使用
- android开发之Bundle使用
- 软件概要设计说明书—模板
- 27. JavaScript Cookies
- My Another Blog
- 建立互信
- ACM-字符串-字典树
- android开发之Bundle使用
- java基础知识之初识java之第二章
- [2011noip day2]7.27test解题报告
- strcmp 与 _tcscmp
- android开发之Bundle使用
- poj1208(链表
- SAP ABAP第一,两,三代出口型BADI实现 解释的概念