Java util之常用数据类型特性盘点
2007-06-29 12:39
387 查看
在做应用性能优化时,常发现因为数据类型使用不当导致的性能、资源浪费问题,甚至老手也常发生此类失误,因此想盘点一下,搞一个类似叫做"quick page"的东东。 欢迎修订增补。 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 util之常用数据类型特性盘点
- Java util之常用数据类型特性盘点
- Java util之常用数据类型特性盘点
- Java util之常用数据类型特性盘点
- 认识java.util包中常用数据类型
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(2)-- 变量和常用数据类型
- JAVA中常用数据类型转换函数
- 共同学习Java源码--常用数据类型--String(十三)
- Java常用的util--TimeUtil(判断是否为数字类型,获取当前日期前后几天的日期等)
- SpringMVC接收java.util.Date类型数据的2种方法
- JAVA1.5新特性----基本数据类型的自动拆箱与装箱
- java中常用的8种基本数据类型,包括字节数
- 解决mysql 数据库中日期类型00:00:00 的问题 设置xml数据类型:java.util.Date
- Java常用数据类型转换(持续更新)
- easyui datetimebox处理【前台传递到后台是string类型,但是后台定义的是java.util.date,如何自动转换数据类型】
- Java中常用的数据类型转换方法
- 共同学习Java源码--常用数据类型--String(十四)
- mybatis常用jdbcType数据类型以及对应的JavaType
- JAVA中常用数据类型转换函数