C#哈西表使用初步

原创 2006年05月22日 23:45:00

一,哈希表(Hashtable)简述

  在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中key/value键值对均为object类型,所以Hashtable可以支持任何类型的key/value键值对.

二,哈希表的简单操作
 在哈希表中添加一个key/value键值对:HashtableObject.Add(key,value);
 在哈希表中去除某个key/value键值对:HashtableObject.Remove(key);
 从哈希表中移除所有元素:           HashtableObject.Clear();
 判断哈希表是否包含特定键key:      HashtableObject.Contains(key);
 下面控制台程序将包含以上所有操作:
using System;
using System.Collections; //使用Hashtable时,必须引入这个命名空间
class hashtable
{
  public static void Main()
  {
  Hashtable ht=new Hashtable(); //创建一个Hashtable实例
  ht.Add("E","e");//添加key/value键值对
  ht.Add("A","a");
  ht.Add("C","c");
  ht.Add("B","b");
  string s=(string)ht["A"];
  if(ht.Contains("E")) //判断哈希表是否包含特定键,其返回值为true或false
    Console.WriteLine("the E key:exist");
  ht.Remove("C");//移除一个key/value键值对
  Console.WriteLine(ht["A"]);//此处输出a
  ht.Clear();//移除所有元素
  Console.WriteLine(ht["A"]); //此处将不会有任何输出
  }
}


三,遍历哈希表

 遍历哈希表需要用到DictionaryEntry Object,代码如下:
 for(DictionaryEntry de in ht) //ht为一个Hashtable实例
 {
   Console.WriteLine(de.Key);//de.Key对应于key/value键值对key
   Console.WriteLine(de.Value);//de.Key对应于key/value键值对value
 }

四,对哈希表进行排序

  对哈希表进行排序在这里的定义是对key/value键值对中的key按一定规则重新排列,但是实际上这个定义是不能实现的,因为我们无法直接在Hashtable进行对key进行重新排列,如果需要Hashtable提供某种规则的输出,可以采用一种变通的做法:
 ArrayList akeys=new ArrayList(ht.Keys); //别忘了导入System.Collections
 akeys.Sort(); //按字母顺序进行排序
 for(string skey in akeys)
 {
   Console.Write(skey + ":");
   Console.WriteLine(ht[skey]);//排序后输出
 }


拉链法处理哈西冲突

上一篇博客介绍了哈希表及处理哈西冲突的一种算法——开放定址法,这篇博客在介绍一下处理哈西冲突的另一种方法——拉链法。就是建立哈希表后,在每个位置下联一条链表,将数据用哈希函数处理后放入相应的链表中。 ...
  • pamelay
  • pamelay
  • 2016年11月07日 13:58
  • 951

hash冲突之线性探测

public class HashDetect { private int mod = 7; private Entry[] table; //避免hash聚集,可以令步长为大于1 的整数 p...
  • wangche320
  • wangche320
  • 2013年07月03日 09:57
  • 408

哈希表的原理和实现

数据结构:hash_map原理  这是一节让你深入理解hash_map的介绍,如果你只是想囫囵吞枣,不想理解其原理,你倒是可以略过这一节,但我还是建议你看看,多了解一些没有坏处。 hash_map基...
  • liaction
  • liaction
  • 2015年03月18日 15:30
  • 439

1700:八皇后问题

总时间限制: 10000ms 内存限制: 65536kB 描述在国际象棋棋盘上放置八个皇后,要求每两个皇后之间不能直接吃掉对方。 输入无输入。 输出按给定顺序和格式输出所有八皇后问题的解...
  • qq_16964363
  • qq_16964363
  • 2018年01月23日 15:25
  • 31

JAVA中使用哈希表

哈希表是一种重要的存储方式,也是一种常见的检索方法。其基本思想是将关系码的值作为自变量,通过一定的函数关系计算出对应的函数值,把这个数值解释为结点的存储地址,将结点存入计算得到存储地址所对应的存储单元...
  • tuolaji8
  • tuolaji8
  • 2015年09月12日 17:22
  • 323

Cardboard虚拟现实开发初步(二)

Google Cardboard 虚拟现实眼镜开发初步(二) Cardboard SDK for Unity的使用 上一篇文章作为系列的开篇,主要是讲了一些虚拟现实的技术和原理,本篇就会带领大家去...
  • sunmc1204953974
  • sunmc1204953974
  • 2015年08月02日 09:06
  • 9600

Java、Android工程师必备知识(一):哈西算法的初步了解

前言在之前去新浪面试的时候,一开始问的都是Android问题,都没有什么压力,大公司不会去上来故意问一些蛋疼的问题,重点考察基础,然后再问一些思维有关的问题。最后说想看看我的java基础,然后问了一个...
  • u011315960
  • u011315960
  • 2017年06月29日 16:35
  • 305

Kafka使用入门教程

介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。这个独特的设计是什么样的呢?   首先让我们看几个基本的消息系统术语: ...
  • loveyaqin1990
  • loveyaqin1990
  • 2014年12月01日 10:16
  • 3606

json 初步入门

自己根据需要总结的:
  • snn1410
  • snn1410
  • 2014年09月10日 14:44
  • 618

C# 引用 表值函数 远程表值函数不可用

EXEC sp_addlinkedserver @server='连接名称',@srvproduct='',@provider='SQLOLEDB',@datasrc='127.0.0.1' EXEC...
  • yiyishuitian
  • yiyishuitian
  • 2014年11月12日 11:21
  • 759
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#哈西表使用初步
举报原因:
原因补充:

(最多只允许输入30个字)