0
点赞
收藏
分享

微信扫一扫

java学习(14)集合(3)


/**
 * 笔记:
 * 一、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));}}


举报

相关推荐

0 条评论