关于HashMap和Hashtable的区别
Hashtable的应用非常广泛,HashMap是新框架中用来代替Hashtable的类,也就是说建议使用HashMap,不要使用Hashtable。可能你觉得Hashtable很好用,为什么不用呢?这里简单分析他们的区别。
1.Hashtable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。
查看Hashtable的源代码就可以发现,除构造函数外,Hashtable的所有 public 方法声明中都有 synchronized 关键字,而HashMap的源代码中则连 synchronized 的影子都没有,当然,注释除外。
2.Hashtable不允许 null 值(key 和 value 都不可以),HashMap允许 null 值(key和value都可以,但是key只能有一个为空)。
3,关于两者的遍历方式大同小异,Hashtable仅仅比HashMap多一个elements方法。
/**a test for Hashtable values can or not be null**/
public class Test {
public static void main(String[]args){
Hashtable<String,String> table=new Hashtable<String,String>();
table.put("a-key","a-values");
table.put("b-key","b-values");
table.put("c-key","c-values");
//table.put("d-key",null);//java.lang.NullPointerException
//System.out.print(table);
/**用values的方式遍历**/
Collection zzy=table.values();
Iterator it=zzy.iterator();
while(it.hasNext()){
String obj=(String)it.next();
System.out.println(obj);
}
/**用entrySet的方式遍历**/
Set set = table.entrySet();
Iterator its = set.iterator();
while (its.hasNext()) {
Entry entry = (Entry) its.next();
System.out.println(entry.getKey() + " - " + entry.getValue());
}
}
}
/**a test for HashMap values can or not be null**/
public class Test1 {
public static void main(String[]args){
HashMap<String,String> table=new HashMap<String,String>();
table.put("a-key","a-values");
table.put("b-key","b-values");
table.put("c-key","c-values");
table.put(null,null);
table.put("d-key",null);//java.lang.NullPointerException
//System.out.print(table);
/**用values的方式遍历**/
Collection zzy=table.values();
Iterator it=zzy.iterator();
while(it.hasNext()){
String obj=(String)it.next();
System.out.println(obj);
}
/**用entrySet的方式遍历**/
Set set = table.entrySet();
Iterator its = set.iterator();
while (its.hasNext()) {
Entry entry = (Entry) its.next();
System.out.println(entry.getKey() + " - " + entry.getValue());
}
}
}
4.HashTable使用Enumeration,HashMap使用Iterator
以下这两点是从内部实现机制上来进行比较
5.哈希值的使用不同
6.Hashtable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。
关于HashMap和Hashtable的区别的更多相关文章
- java面试题——HashMap和Hashtable 的区别
一.HashMap 和Hashtable 的区别 我们先看2个类的定义 public class Hashtable extends Dictionary implements Map, Clonea ...
- Map集合及与Collection的区别、HashMap和HashTable的区别、Collections、
特点:将键映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值. Map集合和Collection集合的区别 Map集合:成对出现 (情侣) ...
- hashMap和hashTable的区别
每日总结,每天进步一点点 hashMap和hashTable的区别 1.父类:hashMap=>AbstractMap hashTable=>Dictionary 2.性能:hashMap ...
- java分享第七天-01(Hashmap和Hashtable的区别&Property)
一.Hashmap和Hashtable的区别 1 主要:Hashtable线程安全,同步,效率相对低下 HashMap线程不安全,非同步,效率相对高 2 父类:Hashtable是Dictionary ...
- HashMap和Hashtable的区别 源码分析
一:以前只知道HashMap和HashTable区别,死记硬背的记住HashMap 允许key value为空 而Hashtable 不允许为空 HashMap线程是非线程安全的,而Hashtable ...
- Java 集合系列 11 hashmap 和 hashtable 的区别
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- HashMap与HashTable的区别、HashMap与HashSet的关系
http://blog.csdn.net/wl_ldy/article/details/5941770 HashTable的应用非常广泛,HashMap是新框架中用来代替HashTable的类,也就是 ...
- 面试题·HashMap和Hashtable的区别(转载再整理)
原文链接: Javarevisited 翻译: ImportNew.com- 唐小娟 译文链接: http://www.importnew.com/7010.html HashMap和Hashtabl ...
- java中的hashmap与hashtable的区别
HashMap和Hashtable的区别 HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别.主要的区别有:线程安全性,同步(synchronizatio ...
- HashMap和Hashtable的区别--List,Set,Map等接口是否都继承自Map接口--Collection和Collections的区别
面试题: 1.HashMap和Hashtable的区别? HashMap:线程不安全,效率高,键和值都允许null值 Hashtable:线程安全,效率低,键和值都不允许null值 ArrayList ...
随机推荐
- SDE ST_Geometry SQL st_intersects查询很慢的解决方法
环境:服务端 SDE 10.0 oracle 11.2,客户端 PLSQL 11,oracle 11.2 为了调试方便,以下测试都是把sql提取出来在PLSQL上做 需求是已知一个多边形的点坐标,要在 ...
- Oracle数据库里面查询字符串类型的字段不为空和为空的SQL语句:
一:查询字符串类型的字段的值不为空的SQL: select * from TB_CMS_FLGTINFO_A t where (t.fsta is not null and t.fsta <&g ...
- BZOJ1006:[HNOI2008]神奇的国度(弦图染色)
Description K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的. 为了巩固三角关系,K国禁止四边关系,五边关 ...
- P2347 砝码称重 (01背包)
题目描述 设有 1g1g1g . 2g2g2g . 3g3g3g . 5g5g5g . 10g10g10g . 20g20g20g 的砝码各若干枚(其总重 ≤1000 \le 1000≤1000 ), ...
- ucml 子业务组件与行为参与者业务组件
- 深入浅出的webpack4构建工具--webpack4+vue+vuex+mock模拟后台数据(十九)
mock的官网文档 mock官网 关于mockjs的优点,官网这样描述它:1)可以前后端分离.2)增加单元测试的真实性(通过随机数据,模拟各种场景).3)开发无侵入(不需要修改既有代码,就可以拦截 A ...
- PAT A1097 Deduplication on a Linked List (25 分)——链表
Given a singly linked list L with integer keys, you are supposed to remove the nodes with duplicated ...
- Photoshop 基础五 橡皮擦工具
橡皮擦工具,对图层消除 背景色橡皮擦工具,对图层,消除背景色 魔棒橡皮擦工具,对图层,颜色相近的消除
- AliOS-Things Visual studio code helloworld 入门
配置环境的时候别忘了下载:GCC工具链:https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads AliOS Thing ...
- SkylineDemoForWeb JavaScript二次开发示例代码
SkylineDemoForWeb JavaScript二次开发示例代码 http://files.cnblogs.com/files/yitianhe/SkylineDemoForWeb.zip