Set,List, Map各自实现类的比较
来源:互联网 发布:环信 服务端开发 java 编辑:程序博客网 时间:2024/05/17 02:41
接口
实现类
实现方式
特点
Set
HashSet
链表的数组(哈希表)
1、HashSet类按照哈希算法来存取集合中的对象,存取速度比较快。
2、存入HashSet的对象必须定义hashCode()。
3、HashSet通常优于HashTree(插入、查找)。只有当需要产生一个经过排序的序列,才用TreeSet。HashTree存在的唯一理由:能够维护其内元素的排序状态。
LinkedHashSet
链表,哈希表
1、具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。
TreeSet
二叉树
1、TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序。
2、使用它可以从Set中提取有序的序列。
List
ArrayList
数组
1、允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。
2、ListIterator只应该用来由后向前遍历 ArrayList,而不是用来插入和移除元素。因为那比LinkedList开销要大很多。
3、每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并 没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。
LinkedList
链表
在实现中采用链表数据结构。插入和删除速度快,访问速度慢。
Vector
数组
Vector非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和ArrayList创建的 Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常。
Map
HashMap
散列表
Map基于散列表的实现。插入和查询“键值对”的开销是固定的。可以通过构造器设置容量capacity和负载因子load factor,以调整容器的性能。
HashTable
"拉链法"实现哈希表
1、Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
2、最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
2、Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
3、只有HashMap可以让你将空值作为一个表的条目的key或value
LinkedHashMap
链表
类似于HashMap,但是迭代遍历它时,取得“键值对”的顺序是其插入次序,或者是最近最少使用(LRU)的次序。只比HashMap慢一点。而在迭代访问时发而更快,因为它使用链表维护内部次序。
TreeMap
红黑树
1、查看“键”或“键值对”时,它们会被排序(次序由Comparable或Comparator决定)。
2、TreeMap的特点在 于,你得到的结果是经过排序的。TreeMap是唯一的带有subMap()方法的Map,它可以返回一个子树。
WeakHashMap
散列表
弱键(weak key)Map,Map中使用的对象也被允许释放: 这是为解决特殊问题设计的。如果没有map之外的引用指向某个“键”,则此“键”可以被垃圾收集器回收。
IdentifyHashMap
散列表
使用==代替equals()对“键”作比较的hash map。专为解决特殊问题而设计
- Set,List, Map各自实现类的比较
- List、Set、Map的比较
- List Map Set的比较
- Java中的Set List Map 的各自特点
- List、Map和Set的实现类
- list set map比较
- Map list set 比较
- 各种List、Map、Set的比较
- List Vecter Map Set 比较
- 简述list,vector,map,set四中STL的数据结构的区别和各自特点
- map set list三种集合之间的关系及各自的特点
- 集合collection的实现类List,set以及map
- List、Map、Set三个接口,存取元素时,各自的特点
- List Set Map 实现类用法总结
- 比较Vector,List,Set和Map间的区别
- JAVA基础-Collection中List,Set,Map的比较总结
- Java中array、Set、List和Map的比较总结
- 整理比较Java集合类(List,Set, Queue, Map)
- 【Caffe的C++接口使用说明五)】win10+cuda7.5+caffe+vs2013环境搭建(CPU版本)
- LVS系列—LVS的三种工作方式(DR原理)(二)
- Java基础知识3
- 【简单计算】 oj102
- 图像处理3:摄像头捕获视频
- Set,List, Map各自实现类的比较
- uLua异常处理
- ADT导入Android工程,提示import android.content cannot be resolved
- C#隐式实现接口成员与显示实现接口成员
- 指导思想 博客名称、头像、个人主页简述
- 仅两个变量实现值的交换
- 用最简单的方法枚举法求最大公约数
- openresty-加强版的nginx
- 逆反的01串 oj105