首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java util之惯用数据类型特性盘点(一)

2012-12-25 
Java util之常用数据类型特性盘点(一)Java util之常用数据类型特性盘点?出处:http://www.iteye.com/topic/

Java util之常用数据类型特性盘点(一)

Java util之常用数据类型特性盘点?


出处:http://www.iteye.com/topic/22192

?


java.util就相当于c++的STL,是Java的一个非常重要的包,有很多常用的数据类型,不同数据类型有不同的用途,而有些数据类似乎很相似,怎样选择应用,就需要对它们进行辨析。?
下面列出了这些数据类型的特点,根据这些特点,就可以有针对性的选用?
 ?
* 蓝色为接口,绿色为具体实现类?
* 缩进的层次结构,就是implement或extend的层次关系?
* 每个接口或类都具备其所有上层接口、类的特性?
 ?
Collection?
........|--------List?
........|..........|----------ArrayList?
........|..........|----------Vector?
........|..........|.............|-----Stack?
........|..........|----------LinkedList?
........|--------Set?
...................|----------HashSet.?
...................|.............|-----LinkedHashSet?
...................|----------SortedSet?
.................................|-----TreeSet?
 ?
Iterator?
.....|-------ListIterator?
 ?
Map?
.....|------Hashtable?
.....|..........|------Properties?
.....|------HashMap?
.....|..........|------LinkedHashMap?
.....|------WeakHashMap?
.....|------SortedMap?
................|------TreeMap?

 ?
Collection.?
●..实现该接口及其子接口的所有类都可应用clone()方法,并是序列化类.?

.....List.?
.....●..可随机访问包含的元素?
.....●..元素是有序的?
.....●..可在任意位置增、删元素?
.....●..不管访问多少次,元素位置不变?
.....●..允许重复元素?
.....●..用Iterator实现单向遍历,也可用ListIterator实现双向遍历?

..........ArrayList?
..........●..用数组作为根本的数据结构来实现List?
..........●..元素顺序存储?
..........●..新增元素改变List大小时,内部会新建一个数组,在将添加元素前将所有数据拷贝到新数组中?
..........●..随机访问很快,删除非头尾元素慢,新增元素慢而且费资源?
..........●..较适用于无频繁增删的情况?
..........●..比数组效率低,如果不是需要可变数组,可考虑使用数组?
..........●..非线程安全?
.?
..........Vector.?
..........●..另一种ArrayList,具备ArrayList的特性?
..........●..所有方法都是线程安全的(双刃剑,和ArrayList的主要区别)?
..........●..比ArrayList效率低?

...............Stack?
...............●..LIFO的数据结构?

..........LinkedList.?
..........●..链接对象数据结构(类似链表)?
..........●..随机访问很慢,增删操作很快,不耗费多余资源?
..........●..非线程安全?

.....Set.?
.....●..不允许重复元素,可以有一个空元素?
.....●..不可随机访问包含的元素?
.....●..只能用Iterator实现单向遍历?

..........HashSet?
..........●..用HashMap作为根本数据结构来实现Set?
..........●..元素是无序的?
..........●..迭代访问元素的顺序和加入的顺序不同?
..........●..多次迭代访问,元素的顺序可能不同?
..........●..非线程安全?

...............LinkedHashSet?
...............●..基于HashMap和链表的Set实现?
...............●..迭代访问元素的顺序和加入的顺序相同?
...............●..多次迭代访问,元素的顺序不便?
...............●..因此可说这是一种有序的数据结构?
...............●..性能比HashSet差?
...............●..非线程安全?

..........SortedSet?
..........●..加入SortedSet的所有元素必须实现Comparable接口?
..........●..元素是有序的?

...............TreeSet.?
...............●..基于TreeMap实现的SortedSet?
...............●..排序后按升序排列元素?
...............●..非线程安全?

-----------------------------------?
 ?
Iterator..?
●..对Set、List进行单向遍历的迭代器?

..........ListIterator.?
..........●..对List进行双向遍历的迭代器?

-----------------------------------?

Map?
●..键值对,键和值一一对应?
●..不允许重复的键.?

.....Hashtable.?
.....●..用作键的对象必须实现了hashcode()、equals()方法,也就是说只有Object及其子类可用作键?
.....●..键、值都不能是空对象?
.....●..多次访问,映射元素的顺序相同?
.....●..线程安全的?

..........Properties?
..........●..键和值都是字符串?

.....HashMap?
.....●..键和值都可以是空对象?
.....●..不保证映射的顺序?
.....●..多次访问,映射元素的顺序可能不同?
.....●..非线程安全?

...............LinkedHashMap?
...............●..多次访问,映射元素的顺序是相同的?
...............●..性能比HashMap差?

.....WeakHashMap..?
.....●..当某个键不再正常使用时,垃圾收集器会移除它,即便有映射关系存在?
.....●..非线程安全?

.....SortedMap.?
.....●..键按升序排列?
.....●..所有键都必须实现.Comparable.接口.?

...............TreeMap.?
...............●..基于红黑树的SortedMap实现?
...............●..非线程安全

?

?

?

?

?

?

?

下一篇:Java util之常用数据类型特性盘点(二)

?

2011-02-24david.wang

热点排行