专栏首页Java技术栈Hashtable 为什么不叫 HashTable?

Hashtable 为什么不叫 HashTable?

前几天在写《HashMap 和 Hashtable 的 6 个区别》这篇文章的时候,差点把 Hashtable 写成了 HashTable,后来看源码证实了是:Hashtable,小写的 "t"able,不符合驼峰命名规则。

什么是驼峰命名规则,来看下面的关键字:

HashMap ArrayList ConcurrentHashMap 简单来说就是,标识符的每个单词首字母必须大写,看起来像是驼峰的形状。

当时就很好奇,Hashtable 为什么不是 HashTable 呢?

作为一名初级的 Java 程序员都应该知道的基本的驼峰命名规则,为什么 JDK 代码里面还有这种不规范的命名呢?

我想大家应该都比较好奇,我特意去查了下资料,没有查到官方的说法,不过在 stackoverflow 上看到了同样的这个问题。

原贴如下:

https://stackoverflow.com/questions/12506706/why-is-the-t-in-hash-tablehashtable-in-java-not-capitalized

最佳答案是:

Hashtable was created in Java v1. The consistent naming conventions for collections were established later, in Java2, when the other classes were published as part of the brand new Java Collection Framework. Which btw made Hashtable obsolete, so it should not be used in new code. Hope that helps.

意思就是:

Hashtable 是在 Java 1.0 的时候创建的,而集合的统一规范命名是在后来的 Java 2 开始约定的,当时其他一部分集合类的发布构成了新的集合框架。 顺便说一下,这样就使得 Hashtable 过时了,所以不应该在新代码中继续使用它。

栈长看了下,Hashtable 确实是 JDK1.0 添加的,最早的一个集合类,这样也说得过去。

那为什么不在后面的 JDK 版本中修复它呢?

可能是为了考虑兼容使用 JDK 老版本的系统吧。所以就将错就错封存在了 JDK,直到现在 JDK 11 了也还没有修复或者考虑删除它。

另外,关于《HashMap 和 Hashtable 的 6 个区别》,有人留言说可以使用 currenthashtable。

栈长又去证实了下,没有 currenthashtable 和 concurrenthashtable 这个类,所有 concurrent* 开头的并发类和接口都在这里了。

好了,关于 Hashtable 的迷惑就此全都解开了。

所有 Java JVM、多线程、集合、新特性等系列文章请在微信公众号 “Java技术栈” 后台回复关键字:java,后续也会不断更新。

觉得有意思不?转发分享一下吧!另外,栈长知识星球和VIP微信群正在优惠中,点击底部阅读原文加入吧!

本文分享自微信公众号 - Java技术栈(javastack)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 超干货 | 2019秋招CV算法面经

    简书地址:https://www.jianshu.com/u/0ba41518b919

    用户1332428
  • Java反射超越泛型

    在一次使用BeanUtils.copyProperties的方法是,莫名其妙的报错,产生的代码分解如下:

    付威
  • java中的字符和流

    在计算机中,我们知道,所有的一切都是归根到底都是二进制的字节形式,包括文件,字符串等等。所以在写程序的时候,尝尝需要和字节打交道。

    付威
  • 「大学生学编程系列」第六篇:如何学习C语言?

    现在很多人初学者直接选择C语言的人已经变得越来越少了,主要原因还是在招聘岗位数量上无法和java,php等高级语言想媲美,但并不代表C语言已经穷途末路没有前景了...

    程序员互动联盟
  • 正则表达式,看我就懂

    不管你学的是什么语言,Java,iOS,安卓,都需要用到正则表达式,又因为正则表达式相通(每种语言几乎一样),所以在哪种语言学会正则,都可以用到其他语言中,下面...

    Dwyane
  • 装饰者模式

    在23种设计模式中,装饰者模式在游戏开发的过程中,使用的很是频繁。因为这个设计模式,把所有的业务的逻辑封装的对应的实体类中,从而为主流程减负了。首先看下一个应用...

    付威
  • Java 依然免费,JDK11 请放心使用

    Java 依然非常稳健,并且在 TIOBE 10 月的语言排行版,处于第一,毫无悬念。

    芋道源码
  • 今天我们结合代码详细聊聊BIO,NIO和AIO

    很多人说BIO不好,会“block”,但到底什么是IO的Block呢?考虑下面两种情况:

    java思维导图
  • 数据结构与算法学习笔记之为用于高考名次排序的排序算法

      在高考结束以后,所有人都在等着成绩,政府部门面对几百万的数据,你知道他们是怎么算名次的么?上一次学到递归排序以及快排,确实,用他们可以实现,可是他们的时间复...

    Dawnzhang
  • 前端入门6-JavaScript客户端api&jQuery

    作为一个前端小白,入门跟着这四个来源学习,感谢作者的分享,在其基础上,通过自己的理解,梳理出的知识点,或许有遗漏,或许有些理解是错误的,如有发现,欢迎指点下。

    请叫我大苏

扫码关注云+社区

领取腾讯云代金券