`
jiadong
  • 浏览: 30705 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HasTable与HasMap的区别

 
阅读更多

1.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。

2.HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。

3.HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样。

4.HashTable使用Enumeration,HashMap使用Iterator。

以上只是表面的不同,它们的实现也有很大的不同。

5.HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。

6.哈希值的使用不同,HashTable直接使用对象的hashCode,代码是这样的:
int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.length;
而HashMap重新计算hash值,而且用与代替求模:
int hash = hash(k);
int i = indexFor(hash, table.length);

static int hash(Object x) {
  int h = x.hashCode
}

HashTable HashMap

前者线程安全,即效率相对低些

后面非线程安全,即效率相对高些

前者不可以有null值

后者可以有null值

分享到:
评论

相关推荐

    c#中hastable的使用

    #### 二、创建与添加元素 在 C# 中使用 `Hashtable` 需要先引入 `System.Collections` 命名空间。创建一个 `Hashtable` 对象非常简单: ```csharp using System; using System.Collections; class Program { ...

    在C#中应用哈希表(Hashtable)

    ### 在C#中应用哈希表(Hashtable) #### 哈希表简介 哈希表(Hashtable)是一种基于散列算法实现的数据结构,在.NET Framework中,`Hashtable`类位于`System.Collections`命名空间内,提供了高效存储键值对(key/...

    then, 承诺使用异步/等待的Swift库.zip

    then, 承诺使用异步/等待的Swift库 那就是 原因 - 示例- 文档- 安装fetchUserId().then { id in print("UserID : (id)")}.onError { e in

    C# json 转hashtable

    与此相关的,`Hashtable`是.NET框架中的一个古老的集合类,用于存储键值对,它在早期的.NET应用中十分常见。然而,随着.NET Framework的发展,`Dictionary, TValue>`逐渐取代了`Hashtable`,因为后者不支持泛型,且...

    C#中关于序列化HashTable的具体用法详解

    ### C#中关于序列化`HashTable`的具体用法详解 #### 一、`HashTable`简介 在.NET Framework中,`HashTable`是`System.Collections`命名空间下提供的一个容器类,主要用于处理和表现键值对(key-value pairs)。...

    Program.cs

    C# Hastable完整案例,附注释说明,非常适合初学者使用,进阶人群谨慎下载,有问题可留言,o(* ̄︶ ̄ *)o

    ASP.NET 上传下载文件

    - **数据库连接**:通过`SqlConnection`对象与数据库建立连接。 - **插入文件到数据库**: - 读取文件流:使用`FileStream`或`MemoryStream`读取文件内容。 - 使用参数化SQL语句插入文件数据:防止SQL注入攻击。 ...

    ExampleDiagram

    2. 数据库设计元素:文档中包含了多个与数据库设计相关的概念,例如“parentTypeId”,“hasTable”,“descriptionid-ne”,“id-ne”等。这些词汇通常用于描述数据库模型中实体之间的关系和属性。例如,...

    判断数据库表是否存在以及修改表名的方法

    之后调用如下方法: 代码如下: /** * 根据表名,判断数据库表是否存在 * @param tableName * @return true:存在该表,false:不存在该表 */ public boolean hasTable(String tableName) { Init(); boolean result = ...

    java图书馆swing源码-Oea.svg:SVGGUI和图形库遵循JavaSwing构建。Oea框架提供了三个Javascript库,1-

    java图书馆swing源码oea.svg 更新时间:2016 ...接口的操作与编写图形应用程序分离。 该包为 JavaScript 开发人员提供了更高级别的抽象,以便独立于 DOM API 操作图形。 它还提供绘制复杂的二维形状、处理字

    Inverted-index

    方法将文件添加到hashtble setItem() 假设我们要添加在索引0对象中找到的术语mango ,则可以使用此方法将索引添加到我们的hastable中 hash . setItem ( 'mango' , 0 ) ; // will create an objec

    Apache OFBiz Datamodel 4

    - `hasTable`: 是否有表格标志。 - `parentTypeId`: 父类型ID。 **8. InvoiceItemTypeAttr** - **定义**: `InvoiceItemTypeAttr` 定义发票项目类型的属性。 - **属性**: - `attrName`: 属性名称。 - `...

    详解C++基础——类继承

    `TableTennisPlayer`包含成员变量`firstname`、`lastname`和`hasTable`,以及相应的成员函数。`RatedPlayer`类则扩展了`TableTennisPlayer`,增加了`rating`成员变量和相关的成员函数。 1. `RatedPlayer`的构造函数...

    HS_Table.js哈希表模拟哈希表

    使用js模拟出哈希表的功能.使用非常方便.功能包括添加,删除,查询,遍历,修改,统计等.弄了很久才弄好的哦.

Global site tag (gtag.js) - Google Analytics