`
韩悠悠
  • 浏览: 839885 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

哈希表的java实现

 
阅读更多

    散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表

 

/**
 * 员工信息类
 * @author Administrator
 *
 */
public class Info {
	private String key;
	private String name;
	
	public Info(String key, String name) {
		this.key = key;
		this.name = name;
	}

	public String getKey() {
		return key;
	}

	public void setKey(String key) {
		this.key = key;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	
}

 

 

import java.math.BigInteger;

public class HashTable {
	private Info[] arr;
	
	/**
	 * 默认的构造方法
	 */
	public HashTable() {
		arr = new Info[100];
	}
	
	/**
	 * 指定数组初始化大小
	 */
	public HashTable(int maxSize) {
		arr = new Info[maxSize];
	}
	
	/**
	 * 插入数据
	 */
	public void insert(Info info) {
		arr[hashCode(info.getKey())] = info;
	}
	
	/**
	 * 查找数据
	 */
	public Info find(String key) {
		return arr[hashCode(key)];
	}
	
	public int hashCode(String key) {
//		int hashVal = 0;
//		for(int i = key.length() - 1; i >= 0; i--) {
//			int letter = key.charAt(i) - 96;
//			hashVal += letter;
//		}
//		return hashVal;
		
		BigInteger hashVal = new BigInteger("0");
		BigInteger pow27 = new BigInteger("1");
		for(int i = key.length() - 1; i >= 0; i--) {
			int letter = key.charAt(i) - 96;
			BigInteger letterB = new BigInteger(String.valueOf(letter));
			hashVal = hashVal.add(letterB.multiply(pow27));
			pow27 = pow27.multiply(new BigInteger(String.valueOf(27)));
		}
		return hashVal.mod(new BigInteger(String.valueOf(arr.length))).intValue();
	}
}

 

public class TestHashTable {
	public static void main(String[] args) {
		HashTable ht = new HashTable();
		ht.insert(new Info("a","张三"));
		ht.insert(new Info("ct","李四"));
		ht.insert(new Info("wangwu","王五"));
		
		System.out.println(ht.find("a").getName());
		System.out.println(ht.find("ct").getName());
	}
}

 

分享到:
评论

相关推荐

    哈希表java实现及简单演示

    在Java中,哈希表的实现主要依赖于`java.util.HashMap`类,它是基于哈希表的Map接口实现。在这个Java版的哈希表演示程序中,我们可能会看到如何使用HashMap类来存储和检索数据,以及如何处理可能出现的哈希冲突。 ...

    哈希表java代码

    在Java中,我们通常使用`HashMap`类来实现哈希表,但这里提到的是自定义实现哈希表的Java代码。这个压缩包包含三个文件:`HashTable.java`、`Info.java`和`TestHashTable.java`,分别代表哈希表的实现、存储的数据...

    哈希表相关操作实现

    哈希表,也被称为散列表,是计算机科学中一种非常重要的数据结构,它提供了...无论是编程语言的内置数据结构,如Python的dict或Java的HashMap,还是在数据库系统、缓存机制等应用场景中,哈希表都是不可或缺的一部分。

    数据结构中哈希表的实现代码

    在实际编程中,常见的哈希表实现如Python的内置`dict`类型、Java的`HashMap`以及C++的`std::unordered_map`,它们都提供了高效的键值对操作。这些库通常已经优化了哈希函数和冲突解决策略,使用者无需关心底层细节。...

    哈希表的实现

    6. **应用实例**:哈希表在实际编程中有广泛应用,如Python的字典、Java的HashMap等都是基于哈希表实现的。它们提供了快速的键值对存取,极大地提高了代码执行效率。 7. **源码分析**:了解哈希表的源码可以帮助...

    Java_Datastructure.rar_java 哈希_java 哈希表

    在IT领域,尤其是编程中,数据结构是至关重要的概念,它们是存储和组织数据...这个压缩包中的"JAVA 重写数据结构"文件可能包含对这些概念的实例化和实现,通过阅读和实践这些代码,可以深入理解哈希表在Java中的应用。

    Java数据结构 线性表,链表,哈希表是常用的数据结构

    Java数据结构 线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构

    拉链法哈希表的设计与实现

    在这个场景中,我们看到一个基于Java的课程设计项目,它利用拉链法实现了一个哈希表,用于电话查询系统的功能。让我们深入了解一下这个主题。 哈希表是一种高效的数据结构,通过将关键字(key)映射到数组的索引...

    Java哈希表性能优化

    本文将深入探讨Java哈希表的内部机制,并介绍一种新的哈希表实现策略,该策略能够显著提高哈希表在面对特定数据序列时的性能。 #### 二、Java哈希表特点分析 ##### 2.1 装载因子恒定 Java标准库中的哈希表实现...

    哈希表实现简单说明-附代码

    哈希表是一种高效的数据结构,它通过特定的哈希函数将键...例如,Python中的`dict`类型、Java的`HashMap`和C++的`std::unordered_map`都是哈希表的典型实现。理解哈希表的工作原理和优化策略对于提升程序性能至关重要。

    哈希表的设计与实现.rar

    5. **源代码实现**:在实际编程中,哈希表的实现通常涉及C++、Java或Python等语言。在实现时,需要考虑内存管理、线程安全、性能优化等问题。例如,Java中的`HashMap`和C++中的`unordered_map`都是内置的哈希表实现...

    哈希表在java中如何实现1

    本文将深入探讨哈希表的实现原理,以及在Java中如何构建哈希函数。 首先,我们需要理解哈希函数的基本概念。哈希函数是一个将任意大小的输入(通常是字符串或数字)转化为固定大小输出的函数。在哈希表中,这个输出...

    哈希表的原理 数据结构

    Java 中的 HashTable 类就是一种常用的哈希表实现。 在实际应用中,哈希表的实现需要考虑到许多因素,如哈希函数的设计、哈希冲突的解决、存储空间的分配等。只有当哈希表的设计和实现都非常完善时,才能发挥哈希...

    数据结构 哈希表 哈希算法

    这种高效的性能使得哈希表在实际应用中广泛用于数据库索引、缓存系统、字典实现等领域。 哈希表的核心在于哈希函数。哈希函数的作用是将关键字(通常为字符串)转换为数组的索引,以便在数组中存储或查找对应的元素...

    ExtensibleHashtable:具有插入和删除方法的可扩展哈希表 java 实现。 处理二进制索引

    当表中的元素数量超过预设的负载因子(load factor)时,哈希表会自动扩大其容量,以保持性能。这个过程称为重新哈希(rehashing),它涉及到将所有现有的键值对重新分布到更大的表中。与`HashMap`不同,`...

    C语言开放地址法哈希表构建

    本项目聚焦于C语言实现开放地址法的哈希表,这是一种解决哈希冲突的方法。 **哈希表简介** 哈希表是由数组和哈希函数共同组成的。哈希函数将键转换为数组下标,使得在理想情况下,每个键都能直接定位到数组中的唯一...

    哈希表搜索算法介绍和java代码实现

    下面是一个简单的Java实现哈希表搜索的示例: ```java import java.util.HashMap; public class HashTableSearch { public static void main(String[] args) { // 创建哈希表 HashMap, String> hashtable = new...

    哈希表-使用Java开发的哈希表-HashTable.zip

    在Java中,`HashTable`是早期版本(Java 1.0)提供的一种线程安全的哈希表实现。尽管现在已经被`HashMap`所替代,但理解`HashTable`的工作原理和特性仍然对深入理解Java集合框架以及数据结构有重要意义。 哈希表的...

    哈希表-浙大数据结构课件

    4. 常见的哈希表实现:在实际编程中,C++中的`std::unordered_map`、Java中的`HashMap`以及Python的`dict`都是基于哈希表实现的高效容器。这些数据结构提供了高效的插入、删除和查找操作,广泛应用于软件开发的各个...

    哈希表,开放地址法之再哈希代码(JAVA)

    哈希表是一种高效的数据结构,它通过特定的哈希函数将键(key)映射到一个固定大小的数组中,以此实现快速查找、插入和删除操作。在处理大量数据时,哈希表通常能提供近似常数时间的平均性能。开放地址法是解决哈希...

Global site tag (gtag.js) - Google Analytics