在做应用性能优化时,常发现因为数据类型使用不当导致的性能、资源浪费问题,甚至老手也常发生此类失误,因此想盘点一下,搞一个类似叫做"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实现
...............●..非线程安全
分享到:
- 2006-08-31 16:55
- 浏览 5590
- 评论(7)
- 论坛回复 / 浏览 (6 / 11859)
- 查看更多
相关推荐
java util工具类2java util工具类2java util工具类2java util工具类2
以下是一些Java中常用的Util类及其重要知识点的详细说明: 1. **ArrayList和LinkedList**: 这两个都是`java.util`包下的List接口实现类。ArrayList基于动态数组,适合随机访问,插入和删除操作相对较慢;LinkedList...
在Java编程中,工具类(Util Class)是包含各种实用函数的静态类,它们提供了一种简化常见任务的方法。在给定的`UtilClass`中,我们有五个主要的工具类:`StringUtil`、`FileUtil`、`ConnectDB`、`DateUtil`和`...
Mysql、Oracle 中的数据类型与 Java 中的数据类型对应表 MySQL 和 Oracle 是两种常用的关系型数据库管理系统,而 Java 是一种广泛应用于企业级应用开发的编程语言。在数据库应用开发中,理解数据类型的对应关系...
java util工具类4java util工具类4java util工具类4java util工具类4ssss
Java中的`util`工具类是Java Standard Edition (Java SE)库中的重要组成部分,它们提供了许多实用功能,极大地简化了开发工作。在这个主题中,我们将深入探讨`StringUtil`、`FileUtil`、`MD5`、`JsonUtil`以及`...
13. **Stream API**:自Java 8起,`java.util.stream`包提供了Stream API,它允许以声明性方式处理数据,适用于大量数据的处理和并行计算。 14. **EnumSet和EnumMap**:专门为枚举类型设计的集合,提供了高效的存储...
### 使用 Java.util.zip 包实现数据压缩与解压 在计算机科学领域,数据压缩技术是一项重要的功能,它能够帮助减少存储空间的需求以及提高网络传输效率。本文将通过一系列的示例来详细介绍如何利用 Java 中的 `java....
Java Util是Java编程语言中的一个核心包,包含了各种实用工具类,这些类提供了大量的静态方法,用于处理数组、集合、日期时间、字符流等常见任务。这个包的重要性在于它为开发者提供了一组基础且强大的工具,极大地...
在Java中,`java.util` 包是最基础也是最常用的工具类集合,而"Java常用Util类Jar"则是一个包含了更多自定义或者网络上流行实用工具类的集合,适用于Web项目的快速开发。 这个压缩包中的`ZycUtil`可能是一个自定义...
Java的`util`工具类是Java Standard Library中的核心部分,包含了大量的实用类和接口,极大地提高了开发效率。这里我们将深入探讨几个在标题和描述中提到的`util`工具类及其在实际项目中的应用。 1. **MD5加密**: `...
Java提供日期(Data)类、日历(Calendar)类,随机数(Random)类,堆栈(Stack)、向量(Vector) 、位集合(Bitset)以及哈希表(Hashtable)等类来表示相应的数据结构
这个包下有很多重要的类,如ArrayList、HashMap、LinkedList、Date、Calendar等,它们提供了许多常用的功能,使得开发者在处理数据结构、集合操作、时间日期等方面的工作变得更加便捷。下面将详细介绍一些`util`包中...
在Java中,`java.util.logging.Logger` 是标准的日志框架之一,它提供了基础的日志记录功能。为了使用这一功能,首先需要获得 `java.util.logging.Logger` 的实例。可以通过调用 `Logger` 类中的静态方法 `getLogger...
Java 数据类型是编程的基础,了解并熟练掌握它们的特性及转换方式对于任何Java开发者来说都至关重要。Java的数据类型主要分为两大类:基本数据类型(Primitive Data Types)和引用数据类型(Reference Data Types)...
java自己封装的工具类,用于节省时间,提高效率,java常用工具类封装util.rar 一个项目不可能没有工具类,工具类的初衷是良好的,代码重用,但到了后面工具类越来越乱,有些项目工具类有几十个,看的眼花缭乱,...
Java util包是Java语言中一个实用的工具类库,提供了许多有用的方法和数据结构。下面将逐一介绍其中几个重要的类。 日期类Date Java中的日期类封装了有关日期和时间的信息,用户可以通过调用相应的方法来获取系统...
Java工具类(Java Util)是Java开发中不可或缺的一部分,它为开发者提供了大量便捷的功能,极大地提高了开发效率。在Java标准库中,`java.util`包是核心工具类库,包含了各种容器类、集合框架、日期时间处理、随机数...
由于 `java.sql.Date` 是 `java.util.Date` 的子类,因此可以将 `java.sql.Date` 直接赋值给 `java.util.Date` 类型的变量,反之则需要显式转换。例如: ```java java.sql.Date sqlDate = new java.sql.Date...