`
旧琴房时光
  • 浏览: 7725 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

数据结构之哈希表的使用

阅读更多

今天初步学习了数据结构中的哈希表。
首先在概念上,哈希表和数组队列,链表一样,是一种用来储存数据的结构。它存在的价值是,当需要储存的数据的数量非常多时,比如腾讯储存qq号时,查找/删除某个数据就需要很大的时间复杂度。此时,就需要用特定的方式储存数据,这样就能大大降低查找的时间复杂度。比如,今天,用一种简单的方式,比如id号(三位数),将三位数上的数字加起来,然后将相同的数放在一个链表里,链表的每个节点储存了一个链表,将相同的数字按顺序排放。
下面是哈希表的源代码。

public class Hash {
		private NodeLinked array[] = new NodeLinked[100];
		//添加数据
		public void add(Colleger obj){
			String num = obj.id+"";
			int count = 0;
			for(int i=0;i<num.length();i++){
				count += ((int)num.charAt(i)-48);
			}
			if(array[count] == null){
				NodeLinked temp = new NodeLinked();
				temp.create(obj);
				array[count] =temp ;
			}else{
				array[count].create(obj);
			}
//			for(int i = 0;i<array[count].size;i++){
//			System.out.println(((Colleger)array[count].find(i).getObj()).id);
//			}
		}
	    //查找数据
		public Colleger get(int id){
			String num = id+"";
			int count = 0;
			for(int i=0;i<num.length();i++){
				count += ((int)num.charAt(i)-48);
			}
			for(int i = 0;i<array[count].size;i++){
				if(((Colleger)array[count].show(i)).id == id){
					return (Colleger)array[count].show(i);
				}
				}
			return null;
		}
		//删除数据
		public void delete(int id){
			String num = id+"";
			int count = 0;
			for(int i=0;i<num.length();i++){
				count += ((int)num.charAt(i)-48);
			}
			for(int i = 0;i<array[count].size;i++){
				if(((Colleger)array[count].show(i)).id == id){
					Colleger temp = (Colleger)array[count].delete(i);
					System.out.println(temp.name);
				}
				}
		}
}


然后还测试了一下哈希表的性能与普通数组的比较,代码如下。

public class Main {

	public static void main(String[] args) {
		Hash h = new Hash();
		//h.delete(173);
		//System.out.println(temp.name);
		LinkedList<Colleger> link = new  LinkedList<Colleger>();
		int num = 10000000;
		long start = System.currentTimeMillis();
		for(int i = 0;i<num;i++){
			link.add(new Colleger(i,"Colleger"+i));
		}
		long end = System.currentTimeMillis();
		System.out.println("这是链表的创建时间"+(end-start));
		long start2 = System.currentTimeMillis();
		for(int i = 0;i<num;i++){
			h.add(new Colleger(i,"Colleger"+i));
		}
		long end2 = System.currentTimeMillis();
		System.out.println("这是哈希表的创建时间"+(end2-start2));
		long start3 = System.currentTimeMillis();
		link.get(8000000);
		long end3 = System.currentTimeMillis();
		System.out.println("这是链表的查找时间"+(end3-start3));
		long start4 = System.currentTimeMillis();
		h.get(8000000);
		long end4 = System.currentTimeMillis();
		System.out.println("这是哈希表的查找时间"+(end4-start4));
	}

}


运行结果如下[img]



 [/img]

 

  • 大小: 83.4 KB
0
0
分享到:
评论

相关推荐

    数据结构哈希表实验报告

    数据结构中的哈希表是一种高效的数据存储和检索结构,它通过特定的哈希函数将关键字映射到数组的索引位置,实现快速访问。在这个实验报告中,我们关注的是如何构建哈希表并进行基本操作,包括插入、删除、查找等。 ...

    数据结构的哈希表使用C++实现

    哈希表,也被称为散列表,是一种非常重要的数据结构,它在计算机科学中扮演着关键角色,尤其是在存储和检索大量数据时。哈希表通过使用哈希函数将键(Key)映射到数组的索引位置,实现了快速的查找、插入和删除操作...

    数据结构课程设计 哈希表设计

    针对某个集体(比如你所在的班级)中的“人名”设计一个哈希表,使得平均查找长度不超过R,完成相应的建表和查表程序。 假设人名为中国人姓名的汉语拼音形式。待填入哈希表的人名共有30个,取平均查找长度的上限为2...

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

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

    数据结构哈希表设计实验报告

    在“数据结构哈希表设计实验报告”中,我们可能会涉及到以下几个关键知识点: 1. **哈希函数**:哈希函数是哈希表的核心,它的作用是将键转化为数组的索引。一个好的哈希函数应该尽可能使得不同的键映射到不同的...

    数据结构课设 哈希表

    数据结构课设 哈希表 C++源码 需要的拿去

    数据结构试验 哈希表设计

    哈希表是一种高效的数据结构,它通过特定的函数——哈希函数,将任意大小的键(key)映射到一个固定大小的数组中,从而实现快速查找、插入和删除操作。在“数据结构试验:哈希表设计”中,我们将探讨哈希表的基本...

    严蔚敏 数据结构 ppt 哈希表 数 图

    哈希表是一种高效的数据结构,主要用于快速查找和存储数据。它通过哈希函数将数据映射到一个固定大小的数组中,以达到快速访问的目的。哈希冲突是哈希表面临的主要挑战,解决冲突的方法有开放寻址法、链地址法等。 ...

    数据结构哈希表

    哈希表是一种高效的数据结构,它通过特定的哈希函数将键(Key)映射到一个固定大小的数组中,以此实现快速的查找、插入和删除操作。在数据结构领域,哈希表是解决查找问题的重要工具,尤其适用于大数据量且需要频繁...

    数据结构-哈希表设计程序

    哈希表是一种高效的数据结构,它通过特定的哈希函数将键(key)映射到一个固定大小的数组中,以此实现快速查找、插入和删除等操作。在数据结构设计中,哈希表是一个重要的组成部分,尤其对于大量数据的处理,它的...

    数据结构中的哈希表查找

    ### 数据结构中的哈希表查找 #### 哈希表简介 哈希表(Hash Table)是一种基于数组的数据结构,它通过将关键字映射到数组的某个位置来存储和检索数据,这种映射过程通常由一个哈希函数完成。哈希表能够实现快速的...

    数据结构 哈希表 实验报告

    数据结构里哈希表的实验报告 构造二叉树,构造哈希表等 c语言版

    数据结构 C语言 哈希表.docx

    ### 数据结构:C语言实现哈希表 #### 核心知识点概述 本篇文章将围绕一个C语言中的哈希表实现案例展开,详细解析哈希表的基本概念、设计思路及其实现过程。通过阅读本文,您将了解到哈希表在C语言编程中的应用,并...

    数据结构中的哈希表和二叉树

    哈希表和二叉树是数据结构中两个重要的概念,它们在存储和检索数据时具有各自的优势和应用场景。本文将详细探讨这两种数据结构,并通过C++实现来加深理解。 首先,我们来了解一下哈希表。哈希表,又称散列表,是一...

    数据结构哈希表实验

    哈希表的代码,可以用于数据结构试验交作业或者用于写实验报告

    数据结构 (课程设计)哈希表实现

    哈希表,又称散列表,是数据结构课程中一种非常重要的数据存储结构,它通过将关键字(key)映射到数组的索引位置来实现快速的查找、插入和删除操作。在本课程设计中,我们将深入理解哈希表的原理,并亲手实现一个...

    哈希表课程设计数据结构实验报告——哈希表设计

    哈希表课程设计数据结构实验报告——哈希表设计 针对某个集体中的人名设计一个哈希表,使得平均查找长度不超过R,完成相应的建立和查表程序. 1.2 人名为汉语拼音形式,最长不超过18个字符(如:庄双双 ...

    数据结构 哈希表 哈希算法

    哈希表,也被称为散列表,是数据结构中一种高效的数据存储和检索工具。它通过哈希函数将数据的关键字映射到一个固定大小的数组中,使得在平均情况下,查找、插入和删除操作的时间复杂度可以达到O(1)。这种高效的性能...

Global site tag (gtag.js) - Google Analytics