当前位置: 首页 > news >正文

HashTable, HashSet, HashMap的区别

HashTable, HashSet, HashMap的区别
 
 
hash是一种很常见也很重要的数据结构,是用hash函数根据键值(key)计算出存储地址,以便直接访问。由完美hash函数(即键值和地址是一一对应的)计算出的地址,在访问时,时间复杂度为O(1)。
Java的Object对象提供了hashCode()这个方法,该方法返回一个hash值。对于变量,该方法一般返回该变量的内存地址。在使用java的HashMap对象时,该方法和equals()方法一起使用,要确保equals()返回true时,hashCode()能返回同样的值;实现这点,一般要重写对象的hashCode()与equals()方法。
关于hash,java提供了三个类HashMap, HashSet, HashTable,他们的区别如下:
1>. HashSet、HashTable实质是使用HashMap实现的;
2>. 在HashSet中,有如下定义:
 
private final static Object temp = new Object();  
 
boolean add(Object obj){  
 return map.put(obj, temp) == null;  
       即插入HashSet中的值,为HashMap中的key,所有的key对应的value均为temp。
3>.
HashMap 没有排序,允许一个或者多个null值,而Hashtable不允许;
HashMap把Hashtable的contains方法去掉了,改成了containsValue与containsKey,因为contains方法让人引起误解; 
 
 4>. HashTable继承于Dictionary类,与HashMap的主要的不同是HashTable是同步的(synchronize)并且不允许null值操作(key 和value均不能为null);在多线程访问时,不需要为他的方法实现同步,而HashMap必须为之提供外同步。
 

转载于:https://www.cnblogs.com/HRuinger/p/6109614.html

相关文章:

  • JavaScript神一样的变量系统
  • esayui
  • 我在使用eclipse配置Tomcat服务器的时候发现,默认情况下Tocmat把我们部署的项目放在了workspaces下面,而不是像Myeclipse默认的那样放在tomcat的安装路径下。...
  • 去除字符串中的emoji字符
  • Thinkphp框架 -- 短信接口验证码
  • pip 使用国内源安装第三方库
  • vue.js入门(3)——组件通信
  • Java线程专栏文章汇总(转)
  • 快速破解哈希密文findmyhash
  • JDBC与Hibernate中SQL语句参数设置的顺序问题
  • 数据库备份通用脚本
  • ehcache memcache redis 三大缓存
  • 二十六、Jcreator使用初步
  • 访问修饰符和构造函数
  • YUV Player
  • 自己简单写的 事件订阅机制
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • IOS评论框不贴底(ios12新bug)
  • JS实现简单的MVC模式开发小游戏
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • php的插入排序,通过双层for循环
  • php中curl和soap方式请求服务超时问题
  • Python socket服务器端、客户端传送信息
  • Service Worker
  • Vultr 教程目录
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 高程读书笔记 第六章 面向对象程序设计
  • 离散点最小(凸)包围边界查找
  • 前嗅ForeSpider采集配置界面介绍
  • 实现菜单下拉伸展折叠效果demo
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 阿里云服务器购买完整流程
  • 国内开源镜像站点
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #include
  • (9)STL算法之逆转旋转
  • (附源码)php新闻发布平台 毕业设计 141646
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (已解决)什么是vue导航守卫
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .equals()到底是什么意思?
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .net core Swagger 过滤部分Api
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .NET/C# 使窗口永不获得焦点
  • .net反编译的九款神器
  • .Net小白的大学四年,内含面经
  • @Documented注解的作用
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution
  • [BSGS算法]纯水斐波那契数列
  • [C++]打开新世界的大门之C++入门
  • [CF494C]Helping People