首页 > 代码库 > JDK源码简析--java.util包中的工具类库

JDK源码简析--java.util包中的工具类库


题记


JDK,Java Development Kit。

我们必须先认识到,JDK只是,仅仅是一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含量来说,还是在一个层级上,它们都是需要被编译成字节码,在JRE中运行的,JDK编译后的结果就是jre/lib下得rt.jar,我们学习使用它的目的是加深对Java的理解,提高我们的Java编码水平。

本系列所有文章基于的JDK版本都是1.7.16。


本节内容


在本节中,简析java.util包所包含的工具类库,主要是集合相关的类库,其次还有正则、压缩解压、并发、日期时间等工具类。

本篇内容大致、简单的对于java.util包进行了一个描述,以后会逐渐进行内容补充,本篇文章相当于一个占位符,所谓先有了骨架,才能逐渐丰满偷笑


集合类


主要接口及其继承关系如下:

SortedSet  -->  Set --> Collection -->  Iterable

List  -->  Collection  -->  Iterable

SortedMap  -->  Map

常用类及其继承关系如下:

HashSet/LinkedHashSet  --> Set

TreeSet  -->  SortedSet  --> Set

ArrayList/LinkedList  -->  List

HashMap  -->  Map

TreeMap  -->  SortedMap  -->  Map


统一称谓:Collection分支的,我们称之为“聚集”;Map分支的,我们称之为“映射”。

Collection继承自Iterable,所以其下的类都可以用迭代器Iterator访问,也可以用for(E e:es)形式访问;Map可以用实现了其内部接口Entry的对象,作为一个元素。

Hashtable和HashMap,他们都实现了Map接口;Hashtable继承自古老的抽象类Dictionary,是线程安全的;HashMap继承自较新的抽象类AbstractMap,不是线程安全的。

HashMap运行null的键和值,而Hashtable不运行null的键和值,这是因为:

Hashtable有方法contains方法(判断是否存在值),如果允许的话,则不论key或者value为null,都会返回null,这容易误解,所以Hashtable就强制限制了,对于null 键和值,直接抛出NullPointerException;

HashMap没有contains方法,分别是containsKey()和containsValues()。

另外JDK5开始,对于线程安全的Map,有一种ConcurrentHashMap,高效,其实现线程安全的过程中,没有使用synchronized。


正则表达式


import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Hello {

	public static void main(String[] args)
	{
		Pattern pattern = Pattern.compile("正则表达式");
		Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
		//替换第一个符合正则的数据
		System.out.println(matcher.replaceFirst("Java"));
	}
}


常用的开发语言都支持正则表达式,但是其对于正则支持的程度是不一样的。

Js正则:http://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx

Python正则:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html

Java正则:

http://www.blogjava.net/xzclog/archive/2006/09/19/70603.html

http://www.cnblogs.com/android-html5/archive/2012/06/02/2533924.html

并发相关类


如下章节的内容有简单使用演示:http://blog.csdn.net/puma_dong/article/details/37597261#t5


压缩解压类


如下章节的内容有简单使用演示:http://blog.csdn.net/puma_dong/article/details/23018555#t20


其他工具类


日期、时间、货币等

JDK源码简析--java.util包中的工具类库