首页 > 编程开发 > java教程网 > java教程

源码解析 HashMap与HashTable的区别

2015-10-30 14:45:57| 发布: | 浏览: 1490

首先,从JDK源码来看,HashMap和HashTable都实现了Map接口:



可以看出,HashTable是从JDK1.0就有的,HashMap而是从JDK1.2才有的。

 

二者实现的接口一致。

 

因此,对外方法API也基本一致:


内部存储方式也基本一致,都是邻接表形式:

基本操作也基本一致,以put方法为例,都是先算Key的hashCode,然后以【hashCode%数组长度】求出放在数组中的索引位置,如果此位置已经有Entry,则把当前Entry插入到此链表的头结点,如果此位置为空,则把Entry直接放到该位置。




总而言之,二者所有的操作基本都一致,只有一点不同,就是HashTable的每个方法都是线程同步的,都加了synchronized修饰符,而HashMap不是。因此HashMap在被多线程共享操作时,会有多线程的问题,最严重的问题是会死循环,具体见下篇文章。


转自:http://lixuguang.iteye.com/blog/2253262


如非特别注明,本站内容均为领悟书生原创,转载请务必注明作者和原始出处。
本文地址:http://www.656463.com/javajiaocheng/M3aaey.htm

相关专题

  • dubbo教程

    dubbo教程

    DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,本教程带你入门学习dubbo框架的相关知识

  • RabbitMQ 教程

    RabbitMQ 教程

    RabbitMQ是一个开源的,在AMQP基础上完整的,可复用的企业消息系统。支持主流的操作系统,Linux、Windows、MacOX等。多种开发语言支持,Java、Python、Ruby、.NET、PHP、C/C++、node.js等。本教程带你学习RabbitMQ环境搭建、RabbitMQ简单队列、work队列、发布订阅消息、各种Exchange应用、与spring整合等

  • java8新特征详解

    java8新特征详解

    本教程详细讲解Java8的新特新,结合简单的示例代码来讲解如何使用默认接口方法,lambda表达式,方法引用以及多重Annotation,同时你将会学到JAVA8最新的API上的改进,比如流,函数式接口,Map以及全新的日期API

  • WebSocket教程

    WebSocket教程

    WebSocket 规范的目标是在浏览器中实现和服务器端双向通信.双向通信可以拓展浏览器上的应用类型,例如实时的数据推送(股票行情),游戏,聊天/im 等.本教程通过java简单的示例带你快速学会WebSocket编程

  • json教程

    json教程

    JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。本专题详细讲解json、jackson、fastjson等工具包的操作教程

  • junit教程

    junit教程

    junit基本介绍,hamcrest和testSuite介绍,基于测试开发讲解和cobertura框架介绍,stub和mock简介,dbunit的使用,dbunit实际运用,easymock的使用,easymock的实际应用,利用easymock测试简单的servlet,cactus的使用,基于Jetty的cactus的使用

  • java教程

    java教程

    java在线教程汇集业界最好的java教程资料,提供最好的学习Java资源,是国内一流的java资料平台

  • i18n 国际化

    i18n 国际化

    国际化(internationalization)又称为 i18n(读法为i 18 n,据说是因为internationalization(国际化)这个单词从i到n之间有18个英文字母,i18n的名字由此而来)

  • freemarker教程

    freemarker教程

    freemarker是现在企业中用得最多的模板引擎,可以根据模板生成相当的静态页面等

  • jstl el 教程

    jstl el 教程

    JSTL指的是JavaServer Pages标准标记库,是封装了许多JSP应用程序通用的核心功能的JSP标签的集合,包括核心标签(Core Tags),格式化标签(Formatting tags),SQL标签(SQL tags),XML标签(XML tags),JSTL函数(JSTL Functions)

  • Struts2教程

    Struts2教程

    Struts2,Struts2教程,Struts2学习,Struts2实例,Struts2视频教程

  • Hibernate教程

    Hibernate教程

    Hibernate,Hibernate教程,Hibernate学习,Hibernate实例,Hibernate视频教程

  • spring教程

    spring教程

    spring,spring教程,spring学习,spring实例,spring视频教程

  • java视频教程

    java视频教程

    java,视频教程,java视频教程,java web 视频教程,java基础视频教程

  • java文件操作专题教程

    java文件操作专题教程

    java创建文件、java创建目录、java读写文件,java读取大文件,java文件操作示例

  • java压缩与解压专题教程

    java压缩与解压专题教程

    java压缩教程,java解压,java压缩文件,java压缩目录