`
hollowinhart
  • 浏览: 128660 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

为什么Hashtable不能加空的键值对进来

 
阅读更多

   Hashtable 为什么不能加入key=null 或者value=null的键值对进来,看它的源码就知道了

一个是硬性规定,一个是算hash值的,不做规定也会抛异常出来.

public synchronized V put(K key, V value) {
 // Make sure the value is not null
 if (value == null) {
     throw new NullPointerException();
 }

 // Makes sure the key is not already in the hashtable.
 Entry tab[] = table;
 int hash = key.hashCode();
 int index = (hash & 0x7FFFFFFF) % tab.length;
 for (Entry<K,V> e = tab[index] ; e != null ; e = e.next) {
     if ((e.hash == hash) && e.key.equals(key)) {
  V old = e.value;
  e.value = value;
  return old;
     }
 }

0
0
分享到:
评论

相关推荐

    HashMap和HashTable底层原理以及常见面试题

    其核心是使用哈希函数将键对象转换为哈希码,然后使用哈希码来确定键值对在数组中的索引。 在HashMap中,存储函数的实现是通过put方法来完成的。put方法首先计算键对象的哈希码,然后对哈希码进行再哈希,最后将...

    hashtable存储数据.rar

    1. **非空键值对**:`Hashtable`不接受null键或null值。试图插入null键或null值会抛出`NullPointerException`。 2. **线程安全**:所有对`Hashtable`的操作都是原子性的,因此在多线程环境下无需额外的同步控制。 3....

    WinFormHashTable最简单用法,.net hashtable ,hashtable ,hashtable用法

    哈希表(Hashtable)是.NET框架中的一种常用数据结构,主要用作键值对存储,它提供了快速的数据存取方式。在WinForm应用程序中,我们可能会利用Hashtable来管理各种对象,尤其是在需要高效查找和操作数据时。下面将...

    java的hashtable的用法.pdf

    - `isEmpty()`:检查`Hashtable`是否为空,即键值对数量为0。 - `put(Object key, Object value)`:添加一个新的键值对,如果键已经存在,则更新对应的值。 - `get(Object key)`:根据指定的键获取对应的值,如果...

    Java 实例 - 遍历 HashTable 的键值源代码+详细教程.zip

    在Java编程语言中,`HashTable`是一个非常重要的数据结构,它提供了一种存储键值对的方式,其中每个键都是唯一的。这个压缩包“Java 实例 - 遍历 HashTable 的键值源代码+详细教程.zip”包含了关于如何遍历`...

    C# json 转hashtable

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

    用Session、Hashtable实现购物车功能

    5. **删除商品**:用户可以选择删除购物车中的某个商品,从Hashtable中移除对应的键值对,并同步更新Session。 6. **结算**:用户确认购买后,从Session获取Hashtable,将购物车数据转化为订单详情,完成支付流程,...

    HashMap与HashTable和HashSet的区别

    本文将重点分析这三种数据结构之间的区别,特别是针对`HashTable`不支持空键值对而`HashMap`支持这一点进行深入探讨。 #### 二、HashTable `HashTable`是基于哈希表实现的一个线程安全的`Map`容器,它不允许`key`...

    HashTable

    《深入解析HashTable:C语言实现的精髓》 在计算机科学中,哈希表(HashTable)是一种数据结构,它实现了关联数组的抽象数据类型,能够快速地进行查找、插入和删除操作。哈希表通过将键(Key)映射到表中的一个位置...

    Hashtable简述

    Hashtable是.NET Framework中System.Collections命名空间的一个类,它作为一个容器,专门用于存储键值对(key-value pairs)。这种数据结构利用哈希表的原理,通过key的哈希码实现快速查找,大大提高了数据检索的...

    C#-Hashtable应用

    接下来,我们可以通过Add方法添加键值对到Hashtable中: ```csharp myHashTable.Add("Key1", "Value1"); myHashTable.Add("Key2", "Value2"); ``` 注意,键必须是不可变类型(如字符串或数值),并且在同一个...

    javascript hashtable 修正版 下载

    - `hashtable_put`方法用于添加键值对,当键为字符串且设置忽略大小写时,会将键转换为大写。 - `hashtable_set`方法用于设置键值对,如果键已存在则会先移除旧的键值对。 - `hashtable_get`方法用于获取键对应的...

    asp.net遍历hashtable

    在ASP.NET中,Hashtable是一种常用的数据结构,它是一个键值对集合,允许程序员存储和检索对象。本篇文章将深入探讨如何在ASP.NET中遍历Hashtable,以及相关的重要知识点。 首先,理解Hashtable的基本概念至关重要...

    java Hashtable的泛型化

    在Java编程语言中,`Hashtable`是`Collections`框架的一部分,它是一个同步的键值对存储容器。在早期的Java版本中,`Hashtable`并没有直接支持泛型,这意味着你可以在其中存储任何类型的键(`Object`)和值(`Object...

    HashTable Sort

    - 添加了一些键值对(这里键和值都是空字符串,实际应用中应该替换为实际的数据)。 - 提取了所有的键并存入 `ArrayList`。 - 对键列表进行了排序。 - 遍历排序后的键列表,并打印出对应的键值对。 2. **按值...

    总结复习 android存储方式2-键值对java Properties

    Properties类继承自HashTable,它提供了读写属性列表(键值对)的功能。这些属性列表通常用于存储配置信息,例如应用的设置或系统参数。Properties类支持两种类型的键值对:字符串到字符串的映射。 **使用步骤** 1....

    Hashtable的使用

    在Java编程语言中,`Hashtable`是一个基于键值对(key-value pairs)的数据结构,它属于同步的、线程安全的容器类。`Hashtable`是`Dictionary`类的一个子类,它不支持`null`键或`null`值。这个类实现了`Map`接口,...

    List Hashtable 的相关操作 asp.net 内含详细代码示例

    在 ASP.NET 开发中,`Hashtable` 是一个常用的集合类,它存储键值对,允许以任意对象作为键和值。`List&lt;T&gt;` 则是另一种集合类,它表示一个可变大小的对象列表,通常用于存储同一类型的元素。在本教程中,我们将深入...

    c# asp.net hashtable对Datalist分页

    在这个过程中,Hashtable作为一个键值对容器,可以用来存储分页的相关信息,如当前页数、总页数、每页记录数等。 1. 数据获取:首先,我们需要从数据库查询出所有数据,通常使用SQL的SELECT语句配合LIMIT或OFFSET-...

Global site tag (gtag.js) - Google Analytics