看下Hashtable中的put 方法
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;
}
}
modCount++;
if (count >= threshold) {
// Rehash the table if the threshold is exceeded
rehash();
tab = table;
index = (hash & 0x7FFFFFFF) % tab.length;
}
// Creates the new entry.
Entry<K,V> e = tab[index];
tab[index] = new Entry<K,V>(hash, key, value, e);
count++;
return null;
}
Entry是Hashtable的一个内部类
然后把插入的value,作为一个数据结构放入
next,Entry实现了一个链表。。。。
查找的时候(下面的get方法),先找到index,然后递归next
图是这样的
protected Entry(int hash, K key, V value, Entry<K,V> next) {
this.hash = hash;
this.key = key;
this.value = value;
this.next = next;//next
}
public synchronized V get(Object key) {
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)) {
return e.value;
}
}
return null;
}
分享到:
相关推荐
比较分析Vector、ArrayList和hashtable hashmap数据结构
数据结构(C语言版)实习,哈希表,取余,二次散列法解决冲突
在Java编程语言中,`Hashtable`是一个非常基础且重要的数据结构,它属于集合框架的一部分,提供了键值对(key-value pairs)的存储功能。`Hashtable`类是线程安全的,意味着在多线程环境下,它能确保数据的一致性和...
C#数据结构之Array、ArrayList、Hashtable、Dictionary ...Array、ArrayList、Hashtable和Dictionary都是C#中的常用数据结构,每种数据结构都有其优缺点,选择合适的数据结构可以提高程序的性能和可读性。
在Delphi编程环境中,哈希表(HashTable)是一种非常重要的数据结构,它提供了一种高效的方式来存储和查找数据。哈希表通过将键(Key)转换为哈希码(Hash Code),然后使用这个哈希码作为索引来快速访问存储的数据...
在计算机科学中,数据结构与算法是构建高效软件的基础,而哈希表作为一种高效的数据结构,被广泛应用于各种编程场景。严蔚敏教授的教材深入浅出地阐述了数据结构和算法,其中包括对哈希表的详细讲解。哈希表,又称散...
数据结构 数据结构_C++之18_hashtable
在编程领域,哈希表(Hashtable)和字典(Dictionary)是两种常用的数据结构,它们在存储和检索键值对时提供了高效的性能。本文将深入探讨这两种数据结构的原理、性能差异以及实际应用中的考虑因素。 哈希表,通常...
哈希表(Hashtable)是.NET框架中的一种常用数据结构,主要用作键值对存储,它提供了快速的数据存取方式。在WinForm应用程序中,我们可能会利用Hashtable来管理各种对象,尤其是在需要高效查找和操作数据时。下面将...
总结,哈希表是数据结构中的重要组成部分,其高效性和灵活性使其在各种场景下都有出色表现。通过C语言实现哈希表,不仅锻炼了编程能力,还能深入理解数据结构和算法,为解决实际问题提供强大的工具。
在计算机科学中,哈希表(HashTable)是一种数据结构,它实现了关联数组的抽象数据类型,能够快速地进行查找、插入和删除操作。哈希表通过将键(Key)映射到表中的一个位置来访问记录,从而实现了快速访问。本文将...
数据结构是计算机科学中至关重要的概念,它涉及如何有效地存储和组织数据,以便进行高效的计算。本文档主要分析了八种常见的数据结构:数组、栈、链表、队列、树、图、堆和散列表。 一、线性表 线性表是最基础的...
数据结构是计算机科学中的核心概念,它涉及到如何在内存中有效地组织和管理数据,以便进行高效的操作。在Java编程中,理解并掌握各种数据结构至关重要,因为它们是构建复杂算法和系统的基础。本教程“实用数据结构...
Hashtable是C#编程语言中的一种内置数据结构,属于.NET Framework的System.Collections命名空间。它是一个基于散列的键值对集合,允许程序员快速查找、添加和删除元素。在本篇文档中,我们将深入探讨如何在C#中有效...
在ASP.NET中,Hashtable是一种常用的数据结构,它是一个键值对集合,允许程序员存储和检索对象。本篇文章将深入探讨如何在ASP.NET中遍历Hashtable,以及相关的重要知识点。 首先,理解Hashtable的基本概念至关重要...
在IT行业中,哈希表(HashTable)是一种常用的数据结构,它提供了一种高效的方式来存储和检索数据。在.NET框架中,`Hashtable`是System.Collections命名空间下的一个类,它实现了键值对(Key-Value Pair)存储,允许...
HashMap和HashTable是Java中两个常用的数据结构,都是基于哈希表实现的,但它们之间存在着一些关键的区别。本文将深入探讨HashMap和HashTable的底层原理,并总结常见的面试题。 HashMap的底层原理 HashMap是Java中...
在Java编程语言中,哈希表(HashTable)是一种常见的数据结构,它提供了高效的数据存储和检索功能。哈希表基于哈希函数将键(Key)映射到数组的索引位置,通过键值对(Key-Value Pair)来存储数据。这种数据结构允许...