当前位置: 首页 > 编程日记 > 正文

JAVA - HashMap和HashTable

1. HashMap

1)  hashmap的数据结构

Hashmap本质就是一个数组,只是当key值重复时,使用链表的方式来存储重复的key值(拉链法),注意:链表中存放的仍然是key值。如下图示:

当我们往hashmap中put元素的时候,先根据key的hash值得到这个元素在数组中的位置(即下标),然后就可以把这个元素放到对应的位置中了。如果这个元素所在的位子上已经存放有其他元素了,那么在同一个位子上的元素将以链表的形式存放,新加入的放在链头,最先加入的放在链尾。

2)使用

Map map = new HashMap();
map.put("Rajib Sarma","100");
map.put("Rajib Sarma","200");//The value "100" is replaced by "200".
map.put("Sazid Ahmed","200");

Iterator iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
}

2. HashTable和HashMap区别

第一,继承不同。

public class Hashtable extends Dictionary implements Map
public class HashMap extends AbstractMap implements Map

第二

Hashtable 中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。在多线程并发的环境下,可以直接使用Hashtable,但是要使用HashMap的话就要自己增加同步处理了。

第三

Hashtable中,key和value都不允许出现null值。

在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示 HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键, 而应该用containsKey()方法来判断。

第四,两个遍历方式的内部实现上不同。

Hashtable、HashMap都使用了 Iterator。而由于历史原因,Hashtable还使用了Enumeration的方式 。

第五

哈希值的使用不同,HashTable直接使用对象的hashCode。而HashMap重新计算hash值。

第六

Hashtable和HashMap它们两个内部实现方式的数组的初始大小和扩容的方式。HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。

相关文章:

empress和queen区别_queen与empress

(1)「queen」和「empress」不仅可以用来指称「king」和「emperor」的妻子,也能指代握有正式权力的女性君主。(2) 英国的君主(queen或king)之所以曾经有过empress或emperor的头衔,是因为英国曾统治过印度次大陆, 他们曾是印度的empress或emperor。如今&am…

在UIWindow上加类似于“回到顶部”的按钮

在公司上个版本的开发中遇到了一个UI布局的小问题: 某个页面需要增加一个分享按钮,但是该页面是二级页面,导航栏右边也已经放置了2个button。 起初和老大谈论这个问题的时候想到的方法是导航栏右边加三个button得了~但是一回想,这…

修改mysql 默认字符集 , 默认引擎

cd /var/lib/mysql/gamell vim db.optdefault-character-setutf8default-collationutf8_general_ciwq service mysqld restart或者service mysqld reload默认字符集修改完毕vim /etc/my.cnf[mysqld]datadir/var/lib/mysqlsocket/var/lib/mysql/mysql.sockusermysqldefault-stor…

bzoj2724: [Violet 6]蒲公英(分块)

传送门 md调了一个晚上最后发现竟然是空间开小了……明明算出来够的…… 讲真其实我以前不太瞧得起分块,觉得这种基于暴力的数据结构一点美感都没有。然而今天做了这道分块的题才发现分块的暴力之美(如果我空间没有开小就更美了) 我们先将整个…

Linux0.01内核根目录Makefile注释

# # Makefile for linux. # If you dont have -mstring-insns in your gcc (and nobody but me has :-) # remove them from the CFLAGS defines. ## #8086汇编编译器和连接器. -0生成8086目标程序;-a生成与gas和gld部分兼容的代码 # AS86 as -0 -a CC86 cc -0 LD86 ld -0# #G…

快速滚动_方老师教滚动快速作文

五年级第一单元作文集阴沉天空中有一小束照着你的阳光。亲爱的孩子,让时间在知识的枝条上、智慧的绿叶上、成熟的果实上留下它勤奋的印痕!罗婉汀作文集自律且努力,别让生活太安逸。亲爱的孩子,耕耘者最信得过自己的汗水&#xff0…

liunx复制备份命令,copy命令,liunx命令

2019独角兽企业重金招聘Python工程师标准>>> 拷贝到的文件夹 /usr/local/文件夹/需要拷贝的路径文件夹 /usr/local/tomcat/webapps/文件夹/复制命令cp -r /usr/local/文件夹/ /usr/local/tomcat/webapps/文件夹/ 转载于:https://my.oschina.net/u/2336787/blog/635…

20.Valid Parentheses (python)

这道题主要用栈来实现的。什么是栈呢,参照书上的后缀表达式的例子谈谈自己的理解,栈最明显的特征是先进后出。所以可以有效的结合题目中 ()对匹配问题,可以把从列表中获取的符号先存到栈中。 首先建个空列表用于映射栈…

The HipHop Virtual Machine

目前Facebook已将该HipHop虚拟机开源,源代码发布在GitHub上。关于该工具的技术原理在Facebook的开发者页面上有一篇详细的文章介绍,查看这里。如果看不到的可以看下面的转载:Were always looking for ways to make our computing infrastruct…

node建立博客系统遇到的问题,1,乱码。2,multer的使用错误。3使用session问题...

2019独角兽企业重金招聘Python工程师标准>>> 1,乱码 文件存储为utf-8格式后还是报错。 原来这个设置只对新建文件编码有效,旧文件不处理的,我还以为旧文件也给转换了。 2,上传文件的multer模块使用错误。 throw new Ty…

python时间函数入门_calendar在python3时间中有哪些常用函数?怎么用?

想要在python中写代码游刃有余,没有函数的支持是万万不行的。很多小伙伴反映,最近函数的应用知识不够了,所以小编挑选了python3时间中的函数,希望可以帮助大家在处理日历方面更加的迅速。其他更多的函数,大家也可以自行…

9.spark core之共享变量

简介 spark执行操作时,可以使用驱动器程序Driver中定义的变量,但有时这种默认的使用方式却并不理想。 集群中运行的每个任务都会连接驱动器获取变量。如果获取的变量比较大,执行效率会非常低下。每个任务都会得到这些变量的一份新的副本&…

【CSDN2012年度博客之星】需要您的一票,感谢大家的支持

从2004年9月,本人一直将自己工作和学习经验写成博文分享给大家,本人有幸被选为2012年88位候选博客之星,如果各位IT‘er喜欢我的博文,请投我一票,做…

双绞线和同轴电缆

线缆作为连接器件,相当于不同系统之间沟通的“桥梁”,选择线缆类型的好坏,也决定着传输信号的质量,影响着整个系统的稳定性。 (1)特性阻抗 先说一下关于线缆在传输过程中的特性阻抗问题。 特性阻抗是指电缆…

keras训练完以后怎么预测_使用Keras建立Wide Deep神经网络,通过描述预测葡萄酒价格...

你能通过“优雅的单宁香”、“成熟的黑醋栗香气”或“浓郁的酒香”这样的描述,预测葡萄酒的价格吗?事实证明,机器学习模型可以。在这篇文章中,我将解释我是如何利用Keras(tf.keras)建立一个Wide & Deep神经网络,并…

如何发布自己的NPM包(模块)?

1.注册NPM 账号 注册地址:https://www.npmjs.com/。 2.初始化自己要发布的项目 搭建本地环境:安装node.js,包含了npm命令。新建目录,在该目录下,初始化项目:npm init。按照提示填写初始化信息,我…

PHP对于浮点型的数据需要用不同的方法去解决

Php: BCMathbc是Binary Calculator的缩写。bc*函数的参数都是操作数加上一个可选的 [int scale],比如string bcadd(string $left_operand, string $right_operand[, int $scale]),如果scale没有提供,就用bcscale的缺省值。这里大数直接用一个…

mysql提示符详解_MySQL字符集使用详解

查看字符集相关变量mysql> show variables like character%;————————–——————————-| Variable_name | Value |————————–——————————-| character_set_client | latin1 || character_set_connection | latin1 || character_set_database…

Apache漏洞修复

今天受同事的委托,修复一台服务器的Apache漏洞,主要集中在以下几点: 1.Apache httpd remote denial of service(中危) 修复建议:将Apache HTTP Sever升级到2.2.20或更高版本。 解决方法:升级HTT…

Java遍历Map对象的四种方式

关于java中遍历map具体哪四种方式&#xff0c;请看下文详解吧。 方式一 这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。 1 2 3 4 Map<Integer, Integer> map new HashMap<Integer, Integer>(); for (Map.Entry<Integer, Intege…

Tokyo Cabinet 安装

tokyocabinet :一个key-value的DBM数据库&#xff0c;但是没有提供网络接口&#xff0c;以下称TC。 tokyotyrant :是为TC写的网络接口&#xff0c;他支持memcache协议&#xff0c;也可以通过HTTP操作&#xff0c;以下称TT。 Tokyo Cabinet 是一款 DBM 数据库&#xff0c;Tokyo …

Packagist / Composer 中国全量镜像

Packagist 镜像 请各位使用本镜像的同学注意&#xff1a; 本镜像已经依照 composer 官方的数据源安全策略完全升级并支持 https 协议&#xff01;请各位同学 按照下面所示的两个方法将 http://packagist.phpcomposer.com 修改为 https://packagist.phpcomposer.com 还没安装 co…

centos yum mysql-devel 5.5_CentOS 6.5下yum安装 MySQL-5.5全过程图文教程

在linux安装mysql是一个困难的事情&#xff0c;yum安装一般是安装的mysql5.1&#xff0c;现在经过自己不懈努力终于能用yum安装mysql5.5了。下面通过两种方法给大家介绍CentOS 6.5下yum安装 MySQL-5.5全过程&#xff0c;一起学习吧。方法一&#xff1a;具体方法和步骤如下所示&…

py 的 第 31 天

1.osi 7层模型 5层&#xff1a; 应用层 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 4层&#xff1a; 应用层 应用层 表示层 会话层 传输层 网络层 物理层 数据链路层 物理层 注意&#xff1a;7层背会。 2.tcp的三次握手&…

mysql实训报告_mysql数据库技术》实验报告.doc

mysql数据库技术》实验报告MySQL数据库技术实验报告系 别班 级学 号姓 名地点地点机房课程名称MySQL数据库技术实验名称实验1 MySQL的使用实 验 过 程目的要求&#xff1a;(1)掌握MySQL服务器安装方法(2)掌握MySQL Administrator的基本使用方法(3)基本了解数据库及其对象实验准…

PHP中魔术方法的用法

PHP中魔术方法的用法 /** PHP把所有以__&#xff08;两个下划线&#xff09;开头的类方法当成魔术方法。所以你定义自己的类方法时&#xff0c;不要以 __为前缀。 * */// __toString、__set、__get__isset()、__unset() /*The __toString method allows a class to decide how …

“互联网+”的时代,易佳互联也随着时代步伐前进着

一谈到互联网&#xff0c;我想大家的心里都不陌生&#xff0c;咱们总理工作报告中提出&#xff0c;制定“互联网”行动计划&#xff0c;推动移动互联网、云计算、大数据、物联网等与现代制造业结合&#xff0c;促进电子商务、工业互联网和互联网金融健康发展&#xff0c;引导互…

PHP 获取数组最后一个值

<?PHP$array array(1,2,4,6,8);echo end($array);?> <?PHP$array array(1,2,4,6,8);echo array_pop($array);?> <?PHP$array array(1,2,4,6,8);$k array_slice($array,-1,1);print_r($k); //结果是一维数组?>

解决nginx 502 bad gateway--团队的力量

nginx 502 bad gateway可以采取客户端强制刷新的方法&#xff0c;但是真正的解决要么改配置或者放CDN上。遇到这个问题&#xff0c;首先是有人发现可以加index.html访问&#xff0c;因为我们是线上网站&#xff0c;没有太多时间去研究&#xff0c;所以先临时这样&#xff1b;然…

MYSQL企业常用架构与调优经验分享

小道消息&#xff1a;2016爱维Linux高薪实战运维提高班全新登场,课程大纲&#xff1a;http://www.iivey.com/666-2一、选择Percona Server、MariaDB还是MYSQL1、Mysql三种存储引擎MySQL提供了两种存储引擎&#xff1a;MyISAM和 InnoDB&#xff0c;MySQL4和5使用默认的MyISAM存储…