Java集合HashMap和Hashtable的区别

HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别于HashMap允许空(null)键值(key),由于线程安全,效率上高于Hashtable.

HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。HashMap把Hashtable的contains(包含)方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。

Hashtable继承Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。

二者最大的不同是,Hashtable的方法是Synchroniz(同步)的,而HashMap不是,在多个线程访问Hashtable的时候,不需要自己为它的方法实现同步,而HashMap必须为之提供外同步。

Hashtable和HashMap采用的hash/rehash算法都大概一样,所以在性能方面,不会有很大的差异。

时间: 2024-12-23 14:57:58

Java集合HashMap和Hashtable的区别的相关文章

java集合HashMap、HashTable、HashSet详解

一.Set和Map关系 Set代表集合元素无序,集合元素不可重复的集合,Map代表一种由多个key-value组成的集合,map集合是set集合的扩展只是名称不同,对应如下 二.HashMap的工作原理 HashMap基于hashing原理,通过put()和get()方法储存和获取对象. put()方法: 它调用键对象的hashCode()方法来计算hashcode值,系统根据hashcode值决定该元素在bucket位置.如果两个对象key的hashcode返回值相同,那他们的存储位置相同,如

Java集合——HashMap、HashTable以及ConCurrentHashMap异同比较

0. 前言 HashMap和HashTable的区别一种比较简单的回答是: (1)HashMap是非线程安全的,HashTable是线程安全的. (2)HashMap的键和值都允许有null存在,而HashTable则都不行. (3)因为线程安全.哈希效率的问题,HashMap效率比HashTable的要高. 但是如果继续追问:Java中的另一个线程安全的与HashMap功能极其类似的类是什么? 同样是线程安全,它与HashTable在线程同步上有什么不同?带着这些问题,开始今天的文章. 本文为

java 的HashMap和HashTable的区别?

1.HashMap和HashTable的区别? HashMap不是线程安全的它的操作方法没有进行同步处理 HashMap允许key为空 HashTable是线程安全的它的操作方法加以了synchronized修饰 HashTable不允许Key为空 2.ArrayList和LinkedList和Vector的区别? ArrayList内部实现是一个object数组,非线程安全 LinkedList内部实现是一个链表结构,非线程安全 Vector内部实现是一个object数组,线程安全 原文地址:

Map...---HashMap和Hashtable的区别-----...LinkedHashMap

*Map接口不是Collection接口的子接口 *Map存放数据的方式采用键值对的方式,类似与生活中目录(键)和内容(值) *常见的实现类: * HashMap**:采用键-值对的方式进行存放. * 键(键的集合是就是set集合):唯一,无序,如果键重复,将发生覆盖 * 值:无序 不唯一(Collection) * 构造函数: * HashMap() 构造一个具有默认初始容量 (16) 和默认加载因子 (0.75) 的空 HashMap. * HashMap(int initialCapaci

Java 集合系列 11 hashmap 和 hashtable 的区别

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 Java 集合系列 05 Vector详细介绍(源码解析)和使用示例 Java 集合系列 06 Stack详细介绍(源码解析)和使用示例 Java 集合系列 07 List总结(LinkedList, ArrayList等使用场景和

从Java源码的角度来分析HashMap与HashTable的区别

由于HashMap与HashTable都是用来存储Key-Value的键值对,所以经常拿来对比二者的区别,下面就从源码的角度来分析一下HashMap与HashTable的区别, 首先介绍一下两者的区别,然后再从源码分析. HahMap与HahTable两者主要区别: 1.继承的父类不同 <span style="font-size:18px;">public class HashMap<K, V> extends AbstractMap<K, V>

JAVA中HashMap和Hashtable区别

Hashtable和HashMap在Java面试中相当容易被问到,甚至成为了集合框架面试题中最常被考的问题,所以在参加任何Java面试之前,都不要忘了准备这一题. 我们先看2个类的定义 public class Hashtable extends Dictionary implements Map, Cloneable, <a href="http://lib.csdn.net/base/javase" class='replace_word' title="Java

java面试题——HashMap和Hashtable 的区别

一.HashMap 和Hashtable 的区别 我们先看2个类的定义 1 public class Hashtable 2 extends Dictionary 3 implements Map, Cloneable, java.io.Serializable public class HashMap extends AbstractMap implements Map, Cloneable, Serializable 可见Hashtable 继承自 Dictiionary 而 HashMap

java中 HashMap和Hashtable,list、set和map 的区别

摘自: http://blog.chinaunix.net/uid-7374279-id-2057584.html HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable.HashMap允许将null作为一个entry的key或者value,而Hashtable不允许.HashMap把Hashtable的contains方法去掉了,改成contains