本文共 1643 字,大约阅读时间需要 5 分钟。
/** * 笔记: * 一、HashMap 与 Hashtable 的区别 * 1.相同点:HashMap 和 Hashtable 都是 Java 的集合类,都可以用来存放Java对象。 * 2.区别: * (1)历史原因 * Hashtable 是基于陈旧的 Dictionary 类的,HashMap 是Java1.2引进的Map接口的一个实现。 * (2)同步性 * Hashtable 是同步的,这个类中的一些方法保证了HashTable中的对象是线程安全的。 * 而HashMap是异步的,因此HashMap的对象不是线程安全的,因为同步的要求会影响执行的效率。 * 所以如果不需要线程安全的集合使用HashMap,可以避免由于同步带来的不必要的性能开销,从而提高效率。 * (3)值 * HashMap可以让你将空值作为一个表的条目的key或value。 * Hashtable不能放入空值。 * * 二、ArrayList 与 Vector 的区别 * 1.相同点:ArrayList 和 Vector 都是Java的集合类。都可以用来存放Java对象。 * 2.区别: * (1)同步性 * Vector是同步的,该类中的一些方法保证了Vector中的对象是线程安全的。 * 而ArrayList是异步的,因此ArrayList的对象不是线程安全的,因为同步的要求会影响执行的效率。 * 所以如果不需要线程安全的集合使用ArrayList,可以避免由于同步带来的不必要的性能开销,从而提高效率。 * (2)数据增长 * 从内部实现机制来讲,ArrayList 和 Vector 都是使用数组(Array)来控制集合中的对象, * 当你向这两种类型中增加元素的时候,如果元素的数目超出了内部数组目前的长度,他们都需要扩展内部数组的长度。 * (重点)Vector缺省情况下自动增长原来一倍的数组长度,ArrayList是原来的50%。**** * 所以你最后获得的这个集合所占的空间总是比你实际需要的大。如果要在集合中保存大量数据,采用Vector。 * 可以通过设置集合的初始化大小来避免不必要的资源开销。 * 三、应用 * 1.如果要求线程安全:使用Vector 和 Hashtable; * 2.如果不要求线程安全:使用 ArrayList、LinkedList、HashMap; * 3.如果要求键值:使用 HashMap、Hashtable; * 4.如果数据量大,考虑安全线程:使用Vector; */package com.shuiyixin1;import com.sun.org.apache.xalan.internal.xsltc.runtime.Hashtable;import java.util.*;public class learnJ_005jihe3 { /** * @作者:shuiyixin
*/public static void main(String[] args) {// TODO Auto-generated method stub//测试之Hashtable能否放入空值 Hashtable ht = new Hashtable();// ht.put(null, null);//语句错误,不能是空值// System.out.println("测试之Hashtable能否放入空值:" + ht.get(null));测试之Hashtable能否放入空值//注:刚开始报错:HashMap cannot be resolved to a type 是因为没有导入java.util.*包// HashMap hm = new HashMap();// hm.put(null, null);// System.out.println("测试之HashMap能否放入空值:" + hm.get(null));}}
转载地址:http://dyyni.baihongyu.com/