[Java] HashMap和HashTable的区别

简介:
  • HashTable

Hashtable继承于Dictionary字典,实现Map接口

键、值都不能是空对象

多次访问,映射元素的顺序相同

线程安全

hash算法 ,Hashtable则直接利用key本身的hash码来做验证

数据遍历的方式 Iterator (支持fast-fail)和 Enumeration (不支持fast-fail)

缺省初始长度为11,内部都为抽象方法,需要 它的实现类一一作自己的实现

备注:程序在对 collection 进行迭代时,某个线程对该 collection 在结构上对其做了修改,这时迭代器就会抛出 ConcurrentModificationException 异常信息,从而产生 fail-fast。

  • HashMap

HashMap继承于AbstractMap抽象类

键和值都可以是空对象

多次访问,映射元素的顺序可能不同

非线程安全 
HashMap可以通过下面的语句进行同步: 
Map m = Collections.synchronizeMap(hashMap);

检测是否含有key时,HashMap内部需要将key的hash码重新计算一边再检测

数据遍历的方式 Iterator (支持fast-fail)

缺省初始长度为16,其内部已经实现了Map所需 要做的大部分工作, 它的子类只需要实现它的少量方法


相关文章
|
1月前
|
Java
Java isBlank和isEmpty的区别
JavaisBlank和isEmpty的区别
17 0
|
1月前
|
存储 Java 数据库
java包装类的作用、基本类型和包装类型的区别
java包装类的作用、基本类型和包装类型的区别
31 0
java包装类的作用、基本类型和包装类型的区别
|
1月前
|
存储 Java 编译器
java和c++的主要区别、各自的优缺点分析、java跨平台的原理的深度解析
java和c++的主要区别、各自的优缺点分析、java跨平台的原理的深度解析
102 0
|
1月前
|
Java 编译器
java中一些方法及其区别
java中一些方法及其区别
|
1月前
|
Java 关系型数据库 MySQL
在Java的反射中,Class.forName和ClassLoader的区别
在Java的反射中,Class.forName和ClassLoader的区别
36 3
|
1月前
|
Java Spring 容器
[JavaWeb]——过滤器filter与拦截器Interceptor的使用、执行过程、区别
[JavaWeb]——过滤器filter与拦截器Interceptor的使用、执行过程、区别
|
1月前
|
设计模式 搜索推荐 Java
java接口和抽象类的区别,以及使用选择
java接口和抽象类的区别,以及使用选择
25 0
|
1天前
|
JavaScript 前端开发 Oracle
java和JavaScript的区别
java和JavaScript的区别
6 3
|
14天前
|
Java 存储
键值之道:深入学习Java中强大的HashMap(二)
键值之道:深入学习Java中强大的HashMap
20 0
键值之道:深入学习Java中强大的HashMap(二)
|
18天前
|
Java 关系型数据库 MySQL
大厂面试题详解:Java抽象类与接口的概念及区别
字节跳动大厂面试题详解:Java抽象类与接口的概念及区别
40 0