前几天在写《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,后续也会不断更新。

有收获?转发给更多的人吧!

本文原创首发于微信公众号:Java技术栈(id:javastack),关注公众号在后台回复 "java" 可获取更多,转载请原样保留本信息。

转载于:https://www.cnblogs.com/javastack/p/10095063.html

Hashtable 为什么不叫 HashTable?相关推荐

  1. C#集合类(HashTable, Dictionary, ArrayList)与HashTable线程安全

    HashTable中的key/value均为object类型,由包含集合元素的存储桶组成.存储桶是 HashTable中各元素的虚拟子组,与大多数集合中进行的搜索和检索相比,存储桶可令搜索和检索更为便 ...

  2. Hashtable、HashMap 与 HashTable区别、HashMap、Hashtable和TreeMap、 LinkedHashMap

    目录 Hashtable的函数都是同步的 HashMap 与 HashTable区别 HashMap.Hashtable和TreeMap LinkedHashMap 特殊新增的构造器 TreeMap ...

  3. 什么是HashTable?HashMap和HashTable的区别

    HashTable是什么?哈希表(Hashtable)又称为"散置",Hashtable是会根据索引键的哈希程序代码组织成的索引键(Key)和值(Value)配对的集合.Hasht ...

  4. HashMap 和 Hashtable 的 6 个区别,最后一个没几个人知道!

    HashMap 和 Hashtable 是 Java 开发程序员必须要掌握的,也是在各种 Java 面试场合中必须会问到的. 但你对这两者的区别了解有多少呢? 现在,栈长我给大家总结一下,或许有你不明 ...

  5. C语言的HashTable简单实现

    原文地址:http://blog.csdn.net/zmxiangde_88/article/details/8025541 HashTable是在实际应用中很重要的一个结构,下面讨论一个简单的实现, ...

  6. HashTable 使用例子

    读取数据库中数据 1.使用Dictionary.HashTable 散列表(快速读取,但在内存中占的空间较大) 在内存中按照"键值对"存储,Key和Value是成对的. 例:Ste ...

  7. Hashtable类

    Hashtable类 Hashtable继承Map接口,实现一个key-value映射的哈希表.任何非空(non-null)的对象都可作为key或者value. 添加数据使用put(key, valu ...

  8. STL之hashtable源代码剖析

    // Filename: stl_hashtable.h// 本实作的hashtable採用的是开链法, 其内存布局例如以下// 对于产生哈希冲突的结点, 我们採取在其位置维护一个链表才处理之 // ...

  9. HashMap和Hashtable及HashSet的区别

    Hashtable类     Hashtable继承Map接口,实现一个key-value映射的哈希表.任何非空(non-null)的对象都可作为key或者value.     添加数据使用put(k ...

最新文章

  1. 来者不拒,“昊”课等你——直播微生物篇
  2. day002-HTML知识点总结:浏览器兼容性之指定IE浏览器使用chrome内核渲染页面
  3. linux内核经典书籍--Linux内核设计与实现
  4. Windows server 2008文件服务器之二屏蔽影音文件以及指定文件名
  5. Maven中dependencies与dependencyManagement的区别
  6. 《算法竞赛入门经典》 例题5-2 木块问题(The Blocks Problem,UVa 101)
  7. 启动wcc显示本地服务器失败,cwrsync server 服务启动失败的解决方法小结
  8. 云计算与虚拟化了解二三事
  9. maven pom.xml详解
  10. 令牌桶算法和漏桶算法python_图解Python算法
  11. mipi的dsi全称_MIPI扫盲——DSI介绍(二)
  12. C++ 析构函数不要抛出异常
  13. 答简书安卓公测群里朋友的提问
  14. Trick(一)——判断一个数的位数
  15. 数据挖掘实验——认识数据与进行数据预处理
  16. 最全总结 | 聊聊 Python 数据处理全家桶(Sqlite篇)
  17. 第四节 二维连续型随机变量及分布、条件概率密度
  18. BBR 会取代 CUBIC 吗?
  19. 与DC漫画招牌角色“蝙蝠侠”结缘,NFT向前再迈进一步
  20. 长春理工计算机研究生就业,计算机学专业长春理工大学在职研究生火热吗

热门文章

  1. 那些年做的xmind思维导图
  2. 一年了,写点关于人生的东西吧
  3. php7 一句话木马,PHP一句话木马研究
  4. JAVA将list2合并到list1_java如何将两个list合并的问题
  5. python互相转换组合_Python中基本类型的连接组合和互相转换13种方式
  6. 软件开发demo是什么意思_地府后台管理系统demo出来了!附地址
  7. python类的应用_如何剖析python应用程序的类方法?
  8. js 链接websocket马上断开_SpringBoot+WebSocket实现简单的数据推送
  9. outlook搜索栏跑到上面去了_长春企业网站搜索优化如何做
  10. mysql中member_在MySql中实现MemberShip的权限管理