首页 > 代码库 > 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包中的工具类库