`

Hashtable中的数据结构

阅读更多
看下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数据结构

    比较分析Vector、ArrayList和hashtable hashmap数据结构

    哈希表 HashTable 数据结构

    数据结构(C语言版)实习,哈希表,取余,二次散列法解决冲突

    hashtable存储数据.rar

    在Java编程语言中,`Hashtable`是一个非常基础且重要的数据结构,它属于集合框架的一部分,提供了键值对(key-value pairs)的存储功能。`Hashtable`类是线程安全的,意味着在多线程环境下,它能确保数据的一致性和...

    c#数据结构之array,arraylist,hashtable,dictionary

    C#数据结构之Array、ArrayList、Hashtable、Dictionary ...Array、ArrayList、Hashtable和Dictionary都是C#中的常用数据结构,每种数据结构都有其优缺点,选择合适的数据结构可以提高程序的性能和可读性。

    dtl.zip_hashtable_hashtable delphi_结构

    在Delphi编程环境中,哈希表(HashTable)是一种非常重要的数据结构,它提供了一种高效的方式来存储和查找数据。哈希表通过将键(Key)转换为哈希码(Hash Code),然后使用这个哈希码作为索引来快速访问存储的数据...

    12 HashTable.rar

    在计算机科学中,数据结构与算法是构建高效软件的基础,而哈希表作为一种高效的数据结构,被广泛应用于各种编程场景。严蔚敏教授的教材深入浅出地阐述了数据结构和算法,其中包括对哈希表的详细讲解。哈希表,又称散...

    数据结构-C++之18-hashtable.zip

    数据结构 数据结构_C++之18_hashtable

    hashtable和dictionary的探讨

    在编程领域,哈希表(Hashtable)和字典(Dictionary)是两种常用的数据结构,它们在存储和检索键值对时提供了高效的性能。本文将深入探讨这两种数据结构的原理、性能差异以及实际应用中的考虑因素。 哈希表,通常...

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

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

    基于C语言的数据结构-哈希表hashTable

    总结,哈希表是数据结构中的重要组成部分,其高效性和灵活性使其在各种场景下都有出色表现。通过C语言实现哈希表,不仅锻炼了编程能力,还能深入理解数据结构和算法,为解决实际问题提供强大的工具。

    HashTable

    在计算机科学中,哈希表(HashTable)是一种数据结构,它实现了关联数组的抽象数据类型,能够快速地进行查找、插入和删除操作。哈希表通过将键(Key)映射到表中的一个位置来访问记录,从而实现了快速访问。本文将...

    数据结构:八大数据结构分析.pdf

    数据结构是计算机科学中至关重要的概念,它涉及如何有效地存储和组织数据,以便进行高效的计算。本文档主要分析了八种常见的数据结构:数组、栈、链表、队列、树、图、堆和散列表。 一、线性表 线性表是最基础的...

    实用数据结构教程_Java语言描述.zip

    数据结构是计算机科学中的核心概念,它涉及到如何在内存中有效地组织和管理数据,以便进行高效的操作。在Java编程中,理解并掌握各种数据结构至关重要,因为它们是构建复杂算法和系统的基础。本教程“实用数据结构...

    C#-Hashtable应用

    Hashtable是C#编程语言中的一种内置数据结构,属于.NET Framework的System.Collections命名空间。它是一个基于散列的键值对集合,允许程序员快速查找、添加和删除元素。在本篇文档中,我们将深入探讨如何在C#中有效...

    asp.net遍历hashtable

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

    使用哈希表Hashtable填充ListBox

    在IT行业中,哈希表(HashTable)是一种常用的数据结构,它提供了一种高效的方式来存储和检索数据。在.NET框架中,`Hashtable`是System.Collections命名空间下的一个类,它实现了键值对(Key-Value Pair)存储,允许...

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

    HashMap和HashTable是Java中两个常用的数据结构,都是基于哈希表实现的,但它们之间存在着一些关键的区别。本文将深入探讨HashMap和HashTable的底层原理,并总结常见的面试题。 HashMap的底层原理 HashMap是Java中...

    HashTable的java实现

    在Java编程语言中,哈希表(HashTable)是一种常见的数据结构,它提供了高效的数据存储和检索功能。哈希表基于哈希函数将键(Key)映射到数组的索引位置,通过键值对(Key-Value Pair)来存储数据。这种数据结构允许...

Global site tag (gtag.js) - Google Analytics