博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中HashMap与HashTable的区别
阅读量:4099 次
发布时间:2019-05-25

本文共 1763 字,大约阅读时间需要 5 分钟。

原文地址:

HashMap与HashTable在哈希表中存储键值对。当用HashTable或者HashMap的时候,我们指定一个对象用作key,还有一个指向这个key的value。然后对这个key进行hash操作,得到的哈希码用于在表中存放value的索引。

Java代码样例

// A sample Java program to demonstrate HashMap and HashTableimport java.util.*;import java.lang.*;import java.io.*;/* Name of the class has to be "Main" only if the class is public. */class Ideone{    public static void main(String args[])    {        //----------hashtable -------------------------        Hashtable
ht=new Hashtable
(); ht.put(101," ajay"); ht.put(101,"Vijay"); ht.put(102,"Ravi"); ht.put(103,"Rahul"); System.out.println("-------------Hash table--------------"); for (Map.Entry m:ht.entrySet()) { System.out.println(m.getKey()+" "+m.getValue()); } //----------------hashmap-------------------------------- HashMap
hm=new HashMap
(); hm.put(100,"Amit"); hm.put(104,"Amit"); // hash map allows duplicate values hm.put(101,"Vijay"); hm.put(102,"Rahul"); System.out.println("-----------Hash map-----------"); for (Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+" "+m.getValue()); } }}

输出:

-------------Hash table--------------103 Rahul102 Ravi101 Vijay-----------Hash map-----------100 Amit101 Vijay102 Rahul104 Amit

HashMap vs HashTable

  1. HashMap不是同步的。它不是线程安全的,所以在没有恰当的synchronization代码的情况下多线程之间不能共享。然而HashTable是同步的,它是线程安全的,可以被多线程共享。
  2. HashMap允许NULL key,多个NULL value。HashTable是不允许有null key和value的。
  3. HashMap一般优于HashTable,如果同步不是必须的话。

为什么HashTable不允许有null而HashMap允许有?

为了能够成功地从HashTable中存储并检索,用作key的对象必须实现hashCode方法还有equals方法。因为null不是一个对象,所以不能实现这些方法。HashMap是HashTable的一个改进版本。HashMap是后面创造出来的。

来源:

Sources:

:

转载地址:http://pkhii.baihongyu.com/

你可能感兴趣的文章
数据结构与算法7-栈
查看>>
Java并发编程 | 一不小心就死锁了,怎么办?
查看>>
(python版)《剑指Offer》JZ01:二维数组中的查找
查看>>
(python版)《剑指Offer》JZ06:旋转数组的最小数字
查看>>
(python版)《剑指Offer》JZ13:调整数组顺序使奇数位于偶数前面
查看>>
(python版)《剑指Offer》JZ28:数组中出现次数超过一半的数字
查看>>
(python版)《剑指Offer》JZ30:连续子数组的最大和
查看>>
(python版)《剑指Offer》JZ32:把数组排成最小的数
查看>>
(python版)《剑指Offer》JZ02:替换空格
查看>>
JSP/Servlet——MVC设计模式
查看>>
使用JSTL
查看>>
Java 8新特性:Stream API
查看>>
管理用户状态——Cookie与Session
查看>>
最受欢迎的前端框架Bootstrap 入门
查看>>
JavaScript编程简介:DOM、AJAX与Chrome调试器
查看>>
通过Maven管理项目依赖
查看>>
通过Spring Boot三分钟创建Spring Web项目
查看>>
Spring的IoC(依赖注入)原理
查看>>
Guava快速入门
查看>>
Java编程基础:static的用法
查看>>