轻松学习C#的哈希表

在C#语言中,还有一种用于快速搜索而组织的键/值组合的数组,这种数组叫做关联数组,也叫做哈希表(Hashtable)。
       哈希表也在System.Collection命名空间下,用于处理和表现类似key/value的键值对,其中key通常用来快速查找,同时key是区分大小写,且key必须是唯一的。它没有有效的排序,所进行的是内在的排序,value用于存储对应于key的值。哈希表中key/value键值对均为object类型,所以哈希表可以支持任何类型的key/value键值对。哈希表的每个元素是一个存储在DictionaryEntry对象中的键值对键值对(所谓的DictionaryEntry结构,就是定义可设置或检索的字典键值对,有一个key属性,一个value属性,分别代表键和值)。
       哈希表最大的优点就是把数据的存储和查找消耗的时间大大降低,几乎可以看成常数时间,而代价仅仅是消耗较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间的做法是值得的。另外,编码比较容易也是它的特点之一。
一、Hashtable元素的添加
        Hashtable提供了一个添加元素的key/value键值对Add方法,该方法有两个参数,一个是键,功能相当于数组中的索引,帮助查找,另一个是值,可以把它看做数组中的元素,其格式为:Hashtable对象.Add(键,值)
        例一、利用上述的方法进行Hashtable对象的元素的添加

<span style="font-size:18px;">using System;
using System.Collections;//需要添加的命名空间
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; 

namespace 哈希表
{
 class Program
 {
  static void Main(string[] args)
  {
   Hashtable al = new Hashtable();
   Console.WriteLine("添加前al的元素个数为:"+al.Count);
   al.Add("1", "a");
   al.Add("2", "b");
   al.Add("3", "c");
   Console.WriteLine("添加后al的元素个数为:"+al.Count);
   Console.ReadLine();
  }
 }
}</span>

输出的结果为:添加前al的元素个数为:0
                       添加后al的元素个数为:3
二、Hashtable元素的删除
Hashtable对象的元素的删除可通过Remove方法,Clear方法来进行。
        (1).Clear方法将清除所有的元素,其格式为:Hashtable对象.Clear()
        (2).Remove方法接受一个key参数,作用是移除一个key/value键值对,其格式为:Hashtable对象.Remove()
例二、利用上述方法进行Hashtable元素的删除

<span style="font-size:18px;">using System;
using System.Collections;//需要添加的命名空间
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; 

namespace 哈希表
{
 class Program
 {
  static void Main(string[] args)
  {
   Hashtable al = new Hashtable();
   Console.WriteLine("添加前al的元素个数为:"+al.Count);
   al.Add("1", "a");
   al.Add("2", "b");
   al.Add("3", "c");
   Console.WriteLine("添加后al的元素个数为:"+al.Count);
   al.Remove("3");
   Console.WriteLine("删除3后al的元素个数为:"+al.Count);
   Console.ReadLine();
  }
 }
}</span>

输出的结果为:添加前al的元素个数为:0
                       添加后al的元素个数为:3
                       删除C后al的元素个数为:2
三、Hashtable元素的遍历
         遍历哈希表需要用到DictionaryEntry(字典键/值对)Object。
例三、利用foreach语句对哈希表进行遍历

<span style="font-size:18px;">using System;
using System.Collections;//需要添加的命名空间
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; 

namespace 哈希表
{
 class Program
 {
  static void Main(string[] args)
  {
   Hashtable al = new Hashtable();
   Console.WriteLine("添加前al的元素个数为:"+al.Count);
   al.Add("1", "a");
   al.Add("2", "b");
   al.Add("3", "c");
   Console.WriteLine("添加后al的元素个数为:"+al.Count);
   foreach (DictionaryEntry t in al)
   {
    Console.Write("键位:"+t.Key+" 值为:");
    Console.WriteLine(t.Value);
   }
   Console.ReadLine();
  }
 }
}</span>

输出的结果为:添加前al的元素个数为:0
                       添加后al的元素个数为:3
                       键位:1 值为:a
                       键位:2 值为:b
                       键位:3 值为:c
四、Hashtable元素的查找
       Hashtable集合提供三个查找方法查找Hashtable中的元素,这三个方法为Contains方法,ContainsKe和方法和ContainsValue方法。
       Contains方法,ContainsKey方法是根据Hashtable的key值去查找,如果找到,返回匹配的最后一项的自0开始的索引,否则返回-1,其格式为:
       Hashtable对象.Contains(key值)或 Hashtable对象.ContainsKey(key值)
       ContainValue方法是根据Hashtable的value值去查找,如果找到,返回匹配的最后一项自0开始的索引,否则,返回-1,其格式为:Hashtable对象.ContainsValue(Value值) 
例四、利用上述的方法进行Hashtable元素的查找

<span style="font-size:18px;">using System;
using System.Collections;//需要添加的命名空间
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; 

namespace 哈希表
{
 class Program
 {
  static void Main(string[] args)
  {
   Hashtable al = new Hashtable();
   Console.WriteLine("添加前al的元素个数为:"+al.Count);
   al.Add("1", "a");
   al.Add("2", "b");
   al.Add("3", "c");
   Console.WriteLine("添加后al的元素个数为:"+al.Count);
   if (al.Contains("1"))
   {
    Console.WriteLine("1存在al中");
   }
   if (al.ContainsKey("2"))
   {
    Console.WriteLine("2存在al中");
   }
   if (al.ContainsValue("c"))
   {
    Console.WriteLine("c存在al中");
   }
   Console.ReadLine();
  }
 }
}</span>

输出的结果为:添加前al的元素个数为:0
                       添加后al的元素个数为:3
                       1存在al中
                       2存在al中
                       c存在al中

以上就是关于C#的哈希表相关介绍,希望对大家的学习有所帮助

(0)

相关推荐

  • C#中HashTable的定义与使用方法

    一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写:value用于存储对应于key的值.Hashtable中keyvalue键值对均为object类型,所以Hashtable可以支持任何类型的keyvalue键值对. 二,哈希表的简单操作 在哈希表中添加一个keyvalue键值对:HashtableO

  • js 模拟实现类似c#下的hashtable的简单功能代码

    如果在c#中,我们只要用hashtable或者dictionary根据key取value的特性,就可以很轻松地实现这个功能了.其实我们稍作处理,js也可以实现类似hashtable的功能.下面总结一下笔者开发中用到的实现方式,贴代码为主. 1.实现思路:主要就是利用原型(prototype)的hasOwnProperty方法,确定对象中的项是该添加.移除还是取出某个匹配的项等.hasOwnProperty比遍历数组取值灵巧快速的地方在于:至少从代码上来看,它是O(1)复杂度的. 2.实现代码 复

  • C#中哈希表(HashTable)用法实例详解(添加/移除/判断/遍历/排序等)

    本文实例讲述了C#中哈希表(HashTable)用法.分享给大家供大家参考,具体如下: 1.  哈希表(HashTable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写:value用于存储对应于key的值.Hashtable中keyvalue键值对均为object类型,所以Hashtable可以支持任何类型的keyvalue键

  • C#中遍历Hashtable的4种方法

    直接上代码,代码中使用四种方法遍历Hashtable. using System; using System.Collections; namespace HashtableExample { class Program { static Hashtable hashtable = new Hashtable(); static void Main(string[] args) { hashtable.Add("first", "Beijing"); hashtab

  • 详解C#中HashTable的用法

    一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写:value用于存储对应于key的值.Hashtable中keyvalue键值对均为object类型,所以Hashtable可以支持任何类型的keyvalue键值对. 二,哈希表的简单操作 在哈希表中添加一个keyvalue键值对:HashtableO

  • C#将HashTable中键列表或值列表复制到一维数组的方法

    本文实例讲述了C#将HashTable中键列表或值列表复制到一维数组的方法.分享给大家供大家参考.具体如下: 下面的示例说明如何将 Hashtable 中键的列表或值的列表复制到一维 Array 中. using System; using System.Collections; public class SamplesHashtable { public static void Main() { // Creates and initializes the source Hashtable.

  • C#使用foreach遍历哈希表(hashtable)的方法

    本文实例讲述了C#使用foreach遍历哈希表(hashtable)的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collection; namespace HashSampleApplication1 { class Program { static void Main() { Hashtable hash = new Hashtable(); hashtable[1] = "kaka"; hashtable[2] = &qu

  • C#常见的几种集合 ArrayList,Hashtable,List<T>,Dictionary<K,V> 遍历方法对比

    一.先来分别介绍一下ArrayList,Hashtable,List<T>,Dictionary<K,V> 1.ArrayList动态数组,保存值的时候比较好用 2.Hashtable以存储键值对的方式存储.value,和key 3.List<T> 和 Dictionary<K,V> 应该是泛型吧,可以保存实体类 二.各种集合的遍历方法演示 1.ArrayList ArrayList list = new ArrayList(); //for遍历 for (

  • C#将hashtable值转换到数组中的方法

    本文实例讲述了C#将hashtable值转换到数组中的方法.分享给大家供大家参考.具体如下: 此代码可以将hashtable中的值通过copyto转换到一个一维数组 var length = ht.Count; Guest[] array = new Guest[length]; ht.Values.CopyTo(array, 0); 其中ht为hashtable,其key为字符串,value为一个Guest类,通过此代码可以讲values的值全部放入 Guest[] 的数组中 希望本文所述对大

  • C#中哈希表(Hashtable)的介绍及简单用法

    key通常可用来快速查找,同时key是区分大小写:value用于存储对应于key的值.Hashtable中key/value键值对均为object类型,所以Hashtable可以支持任何类型的key/value键值对 <BR><BR><BR>在哈希表中添加一个key/value键值对:HashtableObject.Add(key,value); 在哈希表中去除某个key/value键值对:HashtableObject.Remove(key); 从哈希表中移除所有元素

  • C# Hashtable/Dictionary写入和读取对比详解

    一:HashTable1.HashTable是一种散列表,他内部维护很多对Key-Value键值对,其还有一个类似索引的值叫做散列值(HashCode),它是根据GetHashCode方法对Key通过一定算法获取得到的,所有的查找操作定位操作都是基于散列值来实现找到对应的Key和Value值的.2.我们需要使用一个算法让散列值对应HashTable的空间地址尽量不重复,这就是散列函数(GetHashCode)需要做的事.3.当一个HashTable被占用一大半的时候我们通过计算散列值取得的地址值

随机推荐