标签:
1.J2SE中的常用数据结构对象的继承关系如下图
Collection
........|--------List
........|..........|----------ArrayList
........|..........|----------Vector
........|..........|.............|-----Stack
........|..........|----------LinkedList
........|--------Set
...................|----------HashSet.
...................|.............|-----LinkedHashSet
...................|----------SortedSet
.................................|-----TreeSet
Iterator
.....|-------ListIterator
Map
.....|------Hashtable
.....|..........|------Properties
.....|------HashMap
.....|..........|------LinkedHashMap
.....|------WeakHashMap
.....|------SortedMap
................|------TreeMap
2.collection接口及其子类
实现collection接口及其子接口的所有类都可应用clone()方法,并是序列化类。
list接口的特点如下:
ArrayList:
- 用数组作为基本的数据结构来实现list;
- 元素顺序存储;
- 新增元素改变list大小时,内部会新建一个数组,将原有的数据拷贝过去同时,插入新增元素;
- 随机访问的速度很快,删除非头尾元素慢,新增元素慢而且费资源
- 适用于无频繁增删的情况;
- 比数组效率低,如果不需要可变数组,可考虑使用数组替代;
- 非线程安全。
Vector
- 另一种ArrayList,具备ArrayList的特性;
- 所有方法都是线程安全的(双刃剑,和ArrayList的主要区别)。
- 比ArrayList效率低。
Stack:
- LIFO的数据结构
LinkedList:
- 链接对象数据结构;
- 随机访问很慢,增删操作很快,不耗费多余资源;
- 非线程安全。
Set接口的特点如下:
HashSet
- 用HashMap做为基本数据结构来存储Set;
- 元素是无序的;
- 迭代访问元素的顺序和加入的顺序不一致;
- 多次迭代访问,元素的顺序可能不同;
- 非线程安全。
LinkedHashSet
- 基于HashMap和链表实现存储;
- 迭代访问元素的顺序和加入元素的顺序相同;
- 多次迭代访问,元素的顺序不变(是一种有序的数据结构);
- 性能比HashSet差;
- 非线程安全。
SortedSet接口
- 加入SortedSet的所有元素必须实现Comparable接口;
- 元素是有序的。
TreeSet
- 基于TreeMap实现存储;
- 排序后按升序排列元素;
- 非线程安全。
3.Iterator接口:
ListIterator接口
- 对list集合对象实现双向遍历迭代。
4.Map 接口
HashTable
- 用作键的对象必须实现了HashCode(),equals方法,即只有object及其子类才可以做键;
- 键、值都不能使空对象;
- 多次访问,映射元素的顺序相同;
- 线程安全。
Properties
- 键和值都是字符串类型。
HashMap
- 键和值可以是空对象;
- 不保证映射的顺序;
- 多次访问,映射元素的顺序可能不同;
- 非线程安全;
LinkedHashMap
- 多次访问,映射元素的顺序保持一致;
- 性能差与HashMap。
WeakHashMap
- 当某个键不再正常使用时,垃圾收集器会移除它,即便有映射关系在;
- 非线程安全。
SortedMap接口:
- 键按升序排列;
- 所有键都必须实现Comparable接口。
TreeMap
- 基于红黑树(平衡排序二叉树)实现元素存储;
- 非线程安全
补充说明:
二叉查找树(Ordered Binary Tree)
注意:二叉查找树若退化成了一棵具有n个结点的线性链后,则这些操作最坏情况运行时间为O(n)。
红黑树:
虽然本质上是一棵二叉查找树,但它在二叉查找树的基础上增加了着色和相关的性质使得红黑树相对平衡,从而保证了红黑树的查找、插入、删除的时间复杂度最坏为O(log n)。但它是如何保证一棵n个结点的红黑树的高度始终保持在logn的呢?这就引出了红黑树的5个性质:
正是红黑树的这5条性质,使一棵n个结点的红黑树始终保持了logn的高度,从而也就解释了上面所说的“红黑树的查找、插入、删除的时间复杂度最坏为O(log n)”这一结论成立的原因。
下图即是一颗红黑树:
标签:
原文地址:http://www.cnblogs.com/zhulongchao/p/4579385.html