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

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

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,数据结构,list,HashMap,equals,iterator)