C# 使用HashTable总结

上一篇 / 下一篇  2018-01-26 11:26:34 / 个人分类:C#

 这两天编写自动化测试用例的时候,用例中有检查Storage和memory信息,需要检查磁盘已用的空间和可用的空间信息,那我想到的当然用键值对存储当前机型中磁盘的信息,与App检测到的信息做对比,下面就通过使用进行总结。
一、Hashtable的简介
   HashTable是.Net Framework中System.Collections命名空间提供的一个容器,用于处理和表现类似Key/Value的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应key的值。Hashtable中key/value的值对军事object类型,所以Hashtable可用支持任何类型的key/value键对。

二、Hashtable的简单操作

 Hashtable中添加一个键值对使用的方法:HashtableObject.Add(key,value);
 移除某个键值对:HashtableObject.Remove(key);
 移除表中所有元素:HashtableObject.Clear();
 判断Hashtable中是否包含特定的key:HashtableObject.Contains(key);
 要取某个key的值可用:Hashtable[key]
  是继承Dictionary,所以遍历Hashtable列表的时候可以用DictionaryEntry或Object类
 如:
 foreach(DictionaryEntry de in HashtableObject)
   {
 Console.WriteLine("Key:{0}   Value:{1}", de.Key,de.Value)
   }
 或
 foreach(Object key in HashtableObject.Keys)
   {
 Console.WriteLine("Key:{0}   Value:{1}", key,HashtableObject[key])
   }

 下面实例:

Class HashTableTest
{
  public static void main(string[] args)
  {
 Hashtable ht=new Hashtable();
 long driveTotalSize=new long();
 System.IO.DriveInfo[] drives=System.IO.DriveInfo.GetDrives();//获取本机所有的磁盘
 
 foreach(System.IO.DriveInfo drive in drives)
 {
  driveTotalSize=drive.TotalSize/(1024*1024*1024);//获取磁盘总容量
  ht.Add(drive+"TotalSize",driveTotalSize);//
 }
 Console.WriteLine("C disk total size:"+ht[@"C:\TotalSize"]);//这是根据Key直接取值
 //下面是遍历Hashtable方法一
 foreach(Object key in ht.Keys)
    {
  Console.WriteLine("Key:{0}   Value:{1}", key,ht[key])
    }       
 //遍历Hashtable方法二
 foreach(DictionaryEntry de in ht)
    {
  Console.WriteLine("Key:{0}   Value:{1}", de.Key,de.Value)
    }
 
 if(ht.Contains(@"D:\TotalSize"))
  ht.Remove(@"D:\TotalSize");//移除
   }
 
}

Hashtable中的键值对不可以为null,如果使用put(null,null)这种方式添加,可以通过编译,因为key和value都是属于Object类型,但运行时会报NullPointerException异常,如果要存储的值有存在为null的情况,最后不要用Hashtable存储,可以改用HashMap进行存储,HashMap中,null可以作为键,但只有允许存在一个这样的键,但可以运行存在多个键所对应的值为null的情况。

三、对Hashtable排序的方法
   对HashTable进行排序在这里的定义是对key/value键值对的key按照一定规则重新排列,但实际上这个定义不能实现的,因为无法直接在Hashtable中队key进行重新排列,如果需要Hashtable按照某种规则进行输出,可以采用变通的做饭:
  如:
  ArrayList list=new ArrayList(ht.Keys);
  list.Sort();//按字母进行排序
   foreach(string k in list)
   {
 Console.Write(k+":");
 Console.WriteLine(ht[k]);
  }

TAG:

 

评分:0

我来说两句

Open Toolbar