Hashtable和HashMap简单区别

通过程序把HashMap和Hashtable的区别记录一下,以便于以后忘记

一,HashMap和Hashtable都是不可以有重复的key,但是都可以有重复的value,
为什么会不能用重复的key呢,因为第二次put相同的key会把第一次覆盖掉,如下代码
import java.util.Vector;

public class JavaHash {

 public static void main(String[] args) { 
  Hashtable ht = new Hashtable();
  
  ht.put("A", "1");
  ht.put("A", "2");
  ht.put("B", "3");
  ht.put("C", "3");
  //ht.put(null, null);//①
  //ht.put("D", null);//②
  ht.put("", "");
  System.out.println("Hashtable的长度为:"+ht.size());
  System.out.println("Hashtable的所有key为:"+ht.keySet());
  System.out.println("Hashtable中A的value为:"+ht.get("A"));
  System.out.println("Hashtable中B的value为:"+ht.get("B"));
  System.out.println("Hashtable中C的value为:"+ht.get("C"));
  System.out.println("Hashtable中D的value为:"+ht.get("D"));
  System.out.println(ht.containsKey("A"));
  System.out.println(ht.containsValue("1"));
  System.out.println(ht.contains("3"));

  System.out.println("-----------------------------------");
  HashMap hm = new HashMap();
  
  hm.put("A", "1");
  hm.put("A", "2");
  hm.put("B", "3");
  hm.put("C", "3");
  hm.put(null, null);
  hm.put("D", null);
  hm.put("", "");
  System.out.println("HashMap的长度为:"+hm.size());
  System.out.println("HashMap的所有key为:"+hm.keySet());
  System.out.println("HashMap中A的value为:"+hm.get("A"));
  System.out.println("HashMap中B的value为:"+hm.get("B"));
  System.out.println("HashMap中C的value为:"+hm.get("C"));
  System.out.println("HashMap中D的value为:"+hm.get("D"));
  System.out.println(hm.containsKey("A"));
  System.out.println(hm.containsValue("1"));
 }
}

运行结果为:
Hashtable的长度为:4
Hashtable的所有key为:[A, C, , B]
Hashtable中A的value为:2
Hashtable中B的value为:3
Hashtable中C的value为:3
Hashtable中D的value为:null
true
false
true
-----------------------------------
HashMap的长度为:6
HashMap的所有key为:[D, null, A, C, B, ]
HashMap中A的value为:2
HashMap中B的value为:3
HashMap中C的value为:3
HashMap中D的value为:null
true
false

通过运行结果发现,不论是Hashtable,还是HashMap中put两次key为A,最后都会是保存A最后一次值,所以两者都不会有重复key。
二,如果把上述代码中的①②两行添加上后,会报空指针,所以Hashtable中key和value都不能为空null。
    而HashMap中不管是key还是value都可以为null,在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。

 

三,Hahstable和HashMap都提供了containsKey(key)和containsValue(value)方法
    但Hashtable多一个contains(Object value),功能和containsValue(Object value)功能一样。

先把这三点不同写下来,关于线程同步的不同和其他不同点,还不太懂,以后搞通再整理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值