HashMap与HashTable的不同点有两个方面

HashMap与HashTable的不同点有两个方面

第一个是关于是否能够存放NULL值的方面:

呕心沥血的准备了一例子:

import java.util.HashMap;
import java.util.Hashtable;

public class Test_hashmap_hashtable {
	public static void main(String[] args) {
		HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>();
		hashMap.put(null, null);// 表达式一
		hashMap.put(null, 1);// 表达式二
		hashMap.put(1, null);// 表达式三
		System.out.println(hashMap.size());
		/**
		 * ==========================================
		 * 得到的值为2,那么就是在hashmap里面只存储了两个键值对; 表达式一:说明了hashmap类,存储的数据允许使用null值和null键
		 * 表达式一和表达式二:说明了键值的唯一性,当之后出现相同的键值的时候,讲替换掉之前的键值
		 * ==========================================
		 */
		Hashtable<Integer, Integer> hashtable = new Hashtable<Integer, Integer>();

		try {
			hashtable.put(null, null);//表达式四
		} catch (NullPointerException e) {
			System.out.print("发生空指针异常:表达式四\t");
		}
		try {
			hashtable.put(null, 1);//表达式五
		} catch (NullPointerException e) {
			System.out.print("发生空指针异常:表达式五\t");
		}
		try {
			hashtable.put(1, null);//表达式六
		} catch (NullPointerException e) {
			System.out.print("发生空指针异常:表达式六\t");
		}
		
		hashtable.put(1, 1);//表达式七
		System.out.println(hashtable.size());
		/**
		 * =============================================
		 *得到的结果如下:
		 *发生空指针异常:表达式四	发生空指针异常:表达式五	发生空指针异常:表达式六	1
		 *得到结论是:
		 *hashtable里面的键和值,两者都不能为NULL;
		 * =============================================
		 */
	}
}

第二方面是在是否能够同步。在多线程下的,不同线程对对象的操作所造成数据不同的,发生不安全的现象,这类现象在数据库上面好像叫脏读。

是hashmap接口下的两个方法get()和set()方法 他们的修饰词不是 Synchronize的

例子不会,举了半天举不出来

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值