List, ArrayList, LinkedList, Vector 及 Map, HashMap, HashTable区别
来源:互联网 发布:js 调用md5加密 编辑:程序博客网 时间:2024/05/10 05:16
一、前言:
本文是力求将这几点讲的通俗易懂,让大家同时也让自己在基础上,更加牢固点。
Collection 有序的集合
├------List 接口
│ ├LinkedList 链表 (异步, 线程非安全)
│ ├ArrayList 顺序结构动态数组类 (异步, 线程非安全)
│ └Vector 向量(同步, 线程安全)
│ └Stack 栈
└Set 接口
Map 接口
├Hashtable (同步, 线程安全)
├HashMap (异步, 线程非安全)
└WeakHashMap
上图,给出了它们之间的关系。
二、作用:
2.1 List, ArrayList, LinkedList, Vector
List是一个有序的集合(collection),它是一个接口(interface),而LinkedList, ArrayList, Vector都是List的实现。
LinkedList & ArrayList介绍
(1) LinkedList是一个链表结构;ArrayList是一个数组结构。
(2) LinkedList的链表特性,其添加/删除某个元素不用移动数据,且遍历只能顺序遍历;
ArrayList的数组特性正好与链表特性相反,添加/删除某个元素需要移动它之后的数据,
不过,由于是有序的,所以遍历可以采用如二分查找来快速定位。
注:ArrayList实现了可变大小,当需要添加N个元素时,可调用ensureCapacity方法来
提高效率。
(3) 由于两者都是异步,所以导致线程不安全:即多个线程可以同时读/写,但这时需要自己来做同步方法。
Vector介绍
与ArrayList类似,只不过它是同步,线程安全的,当一个线程占用并使用时,另一个线程改变其状态会导致
异常ConcurrentModificationException。
Stack介绍
从图中可以看出,Stack是继承Vector的,它实现了LIFO(Last In First Out,后进先出),扩展Vector并
实现了push和pop功能,以及其它几种方法。
2.2 Map, HashMap, HashTable
Map没有继承Collection,它提供了Key-Value即键值映射,一个Map中,不能有相同的Key,且每个Key只能
有一个Value。Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一
组key-value映射。
HashMap & HashTable介绍
HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null value和null key。
但是将HashMap视为Collection时(values()方法可返回Collection),其迭代子操作时间开销和HashMap 的
容量成比例。
WeakHashMap介绍
它是一种改进的HashMap,它对key实行“弱引用”,如果一个key不再被外部所引用,那么该key可以被GC回收。
- List, ArrayList, LinkedList, Vector 及 Map, HashMap, HashTable区别
- List, ArrayList, LinkedList, Vector 及 Map, HashMap, HashTable区别
- List、ArrayList、Vector及map、HashTable、HashMap分别的区别
- List、ArrayList、Vector及map、HashTable、HashMap的区别
- List(LinkedList,ArrayList,Vector,Stack),Set,Map(Hashtable,HashMap)
- ArrayList Vector LinkedList 区别,HashMap,Hashtable区别
- List、Map、Set的理解(LinkedList和ArrayList、Vector和ArrayList、HashMap和HashTable和HashSet区别与使用)
- List、Map、Set的理解(LinkedList和ArrayList、Vector和ArrayList、HashMap和HashTable和HashSet区别与使用)
- HashMap、HashTable、ArrayList、LinkedList、Vector的区别
- HashMap、HashTable、ArrayList、LinkedList、Vector的区别 .
- HashMap、HashTable、ArrayList、LinkedList、Vector区别
- Vector、ArrayList、LinkedList、HashMap、TreeMap、HashTable 区别
- HashMap、HashTable、ArrayList、LinkedList、Vector区别
- Collection,Map,HashMap,hashTable,TreeMap,List,Vector,ArrayList的区别
- Java中List,ArrayList、Vector,map,HashTable,HashMap区别用法
- Collection,Map,HashMap,hashTable,TreeMap,List,Vector,ArrayList的区别
- Java中List,ArrayList、Vector,map,HashTable,HashMap区别用法
- Java中List,ArrayList、Vector,map,HashTable,HashMap区别用法
- HDOJ, 杭电2042, 不容易系列之二。。。递归题目。。
- C++内存对齐
- 色彩空间转换
- cmd下生成wsdl客户端代码指令
- dfs--poj3187
- List, ArrayList, LinkedList, Vector 及 Map, HashMap, HashTable区别
- SEOER该如何看待搜搜搜狗联合?
- 养生保健 切记做到7个按时
- jquery选择器
- 疯狂程序员(7)
- [009] 百度地图API之MyLocationOverlay的使用(Android) .
- getWriter() has already been called for this response 的解决办法
- 怎么对待重复的代码
- CentOS中安装Python-PIP