您的位置:首页 > 编程语言 > Java开发

浅谈对java集合的理解

2016-09-20 21:13 246 查看
首先是集合的框架图,



图片来源

Java集合是java提供的一个工具包,全部继承自
java.util.*
。主要包括两大接口
Collection
接口和
Map
接口以及相关的工具类(
Iterator
迭代器接口、
Enumeration
枚举类、
Arrays
Colletions
)。

1、
Collection
是一个接口,包含
List
列表和
Set
集合。其中
List
是有序的队列,元素值可以重复,索引从0开始,实现类有
LinkedList
ArrayList
Vector
;而
Set
是一个不允许有重复元素的集合,
Set
的实现类有
HashSet
TreeSet
HashSet
依赖于
HashMap
,它实际上是通过
HashMap
实现的;
TreeSet
依赖于
TreeMap
,它实际上是通过
TreeMap
实现的。

2、Map是一个映射接口,通过
key-value
键值对实现。实现类有
HashMap
TreeMap
WeakHashMap
Hashtable


3、
Iterator
是遍历集合的工具,
Enumeration
也是遍历集合,但它的的功能要比
Iterator
少,只能在
Hashtable
,
Vector
,
Stack
中使用。

4、
Arrays
和`Collections是操作数组、集合的两个工具类。

下面是具体一点的比较:

1.
ArrayList
,
LinkedList
,
Vector
,
Stack
是List的4个实现类,比较他们的异同。


ArrayList
是一个数组队列,相当于动态数组。它由数组实现,随机访问效率高,随机插入、随机删除效率低。

LinkedList
是一个双向链表。它也可以被当作堆栈、队列或双端队列进行操作。
LinkedList
随机访问效率低,但随机插入、随机删除效率高。

Vector
是矢量队列,和
ArrayList
一样,它也是一个动态数组,由数组实现。但是
ArrayList
是非线程安全的,而
Vector
是线程安全的。

Stack
是栈,它继承于
Vector
。它的特性是:先进后出(FILO, First In Last Out)。

2.
HashMap
HashTable
TreeMap
的区别


HashMap
是键值对的方式存储的,但不能保证次序,单线程;

HashTable
HashMap
存储方式相同,但是是线程安全的;

TreeMap
是有序的键值对,基于红黑树排序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java iterator