大家都知道,随着近些年科学技术水平的不断进步与发展,学习编程语言的人也越来越多了。很多人对于java中的一些常见知识点有些不了解,今天就来为大家详细介绍一下。

首先说一下具体的概念:

HashTable类继承自Dictionary类, 实现了Map接口。 大部分的操作都是通过synchronized锁保护的,是线程安全的,key、value都不可以为null, 每次put方法不允许null值,如果发现是null,则直接抛出异常。

另外,官方文档也说了:如果在非线程安全的情况下使用,建议使用HashMap替换,如果在线程安全的情况下使用,建议使用ConcurrentHashMap替换。

然后介绍一下它的数据结构:

主要是数组+链表。

那么,存取实现怎么做呢?主要如下:

put():

限制了value不能为null。

由于直接使用key.hashcode(),而没有向hashmap一样先判断key是否为null,所以key为null时,调用key.hashcode()会出错,所以hashtable中key也不能为null。

Hashtable是在链表的头部添加元素的。

int index=(hash & 0x7FFFFFFF)%tab.length;获取index的方式与HashMap不同

最后就是关于它的扩容机制:

Hashtable默认capacity是11,默认负载因子是0.75.。当前表中的Entry数量,如果超过了阈值,就会扩容,即调用rehash方法,重新计算每个键值对的hashCode;

判断新的容量是否超过了上限,没超过就新建一个新数组,大小为原数组的2倍+1,将旧数的键值对重新hash添加到新数组中。

以上就是关于java

Hashtable底层原理的具体知识了,为大家详细的进行了说明。具体的内容还是很好理解的。如果你对java知识感兴趣,想要了解更多java基础知识以及常见问题,敬请关注奇Q工具网。

推荐阅读:

java hashtable 数据结构_java Hashtable底层原理是怎样的?数据结构包括什么?相关推荐

  1. java哈希_Java Hashtable 类

    Java Hashtable 类 Hashtable是原始的java.util的一部分, 是一个Dictionary具体的实现 . 然而,Java 2 重构的Hashtable实现了Map接口,因此, ...

  2. java map原理_Java HashMap底层原理分析

    前两天面试的时候,被面试官问到HashMap底层原理,之前只会用,底层实现完全没看过,这两天补了补功课,写篇文章记录一下,好记性不如烂笔头啊,毕竟这年头脑子它记不住东西了哈哈哈.好了,言归正传,今天我 ...

  3. java aqs详解_Java AQS底层原理解析

    AQS底层原理 AQS(AbstractQueuedSynchronizer)是一个抽象同步队列,JUC(java.util.concurrent)中很多同步锁都是基于AQS实现的. AQS的基本原理 ...

  4. 【你好面试官】008 Java内存模型指volatile底层原理详解、多处理器原子操作实现原理

    微信公众号:你好面试官 这里没有碎片化的知识,只有完整的知识体系. 专注于系统全面的知识点讲解,面试题目解析; 如果你觉得文章对你有帮助,欢迎关注.分享.赞赏. ###前言 二蛋几天没有收到面试通知, ...

  5. java中数据类型byte的底层原理透析

    byte数据类型详解 二进制.位.字节的关系 二进制 位 字节 三者联系 ascll码表 Byte数据类型底层原理说明 代码与结果展示 结果透析 二进制.位.字节的关系 二进制 十进制:0,1,2,3 ...

  6. java面试题:voliate底层原理——详解

    1. voliate底层原理 1.1 voliate变量的特点 可见性: 当一个线程修改了声明为volatile变量的值,新值对于其他要读该变量的线程来说是立即可见的. 有序性: volatile变量 ...

  7. java hashtable 遍历_Java HashTable forEach()用法及代码示例

    Hashtable类的forEach(BiConsumer)方法对哈希表的每个条目执行BiConsumer操作,直到已处理完所有条目或该操作引发异常. BiConsumer操作是按迭代顺序执行的哈希表 ...

  8. java nio底层实现_Java NIO 底层原理

    一.概念说明 1.内核态(内核空间)和用户态(用户空间)的区别和联系? 用户空间是用户进程所在的内存区域,系统空间是操作系统所在的内存区域.为了保证内核的安全,处于用户态的程序只能访问用户空间,而处于 ...

  9. java 反射机制_Java反射机制原理探究

    反射是Java中的一个重要的特性,使用反射可以在运行时动态生成对象.获取对象属性以及调用对象方法.与编译期的静态行为相对,所有的静态型操作都在编译期完成,而反射的所有行为基本都是在运行时进行的,这是一 ...

最新文章

  1. [翻译]通过调用多个动作创建ASP.NET MVC视图
  2. 九、Swift对象存储服务(双节点搭建)
  3. vs2015编译tensorflow v1.5
  4. Android动态方式破解apk进阶篇(IDA调试so源码)
  5. Python内存池管理与缓冲池设计
  6. android旋转动画开源库,android 围绕中心旋转动画
  7. java new expression,JAVA公式解析示例
  8. 第3篇:Flowable快速工作流脚手架Jsite_关闭演示模式
  9. 60-008-020-使用-命令-flink命令
  10. 让程序员过年回家包压岁钱不心痛的好办法|v3.11.0上线!
  11. 软件开发学习资料大全
  12. 初中学校计算机机房管理制度,学校机房管理制度
  13. Unity3D实现3D立体的圆环进度条(圆环百分比、圆环血条)
  14. 陌上红尘,可有摆渡人?
  15. unity3d 锁定鼠标
  16. PAT A1010 Radix +神
  17. 关于串联匹配电阻其作用
  18. Android【Socket通讯】
  19. 游戏开发:游戏内小红点的实现方案
  20. Eclipse平台技术概述

热门文章

  1. Intellij IDEA 安装插件 报 ‘plugin xxxx is incompatible‘ 解决方案
  2. ubuntu终端执行shell脚本报command not found解决方法
  3. java向mysql插入数据乱码问题解决
  4. 关于ElementUI中MessageBox弹框的取消键盘触发事件(enter,esc)关闭弹窗(执行事件)的解决方法
  5. 使用$.post和action或servlet交互 URL出现 http://localhost:8080/../[object%20Object] 错误的问题解决
  6. 如何为curl命令添加数据?
  7. 中止git-pick-pick?
  8. php站中文转码在iis 7.5乱码,iis伪静态中文url出现乱码的解决办法
  9. 问答| 为什么四轮驱动机器人的转向方式是滑动转向呢?
  10. 指针08:指针配合数组和函数