初涉Hashtable寄语

由于近段时间培训内容涉及到Hashtable方面的知识,由于培训仅仅起到一个引导的作用,加之以前又接触得少,因此对Hashtable这个东东蛮陌生,呵呵,今晚木有事儿就一起来学习一下吧,更欢迎大神进来批评指正

什么是Hashtable

我们从字面意思就可以猜到Hashtable就是哈希表,它是通过类实现一个哈希表,里面存着一个个的键值对,哈希表可以将键映射到相应的值。Hashtable是一个容器,我们可以使用key来快速查找相应的值。并且在Hashtable中key和value均为object类型,也就是说Hashtable可以支持任何类型。

对Hashtable方法的简单操作

对于Hashtable进行一些简单的操作,罗列一下下,特别提醒使用Hashtable时必须引用System.Collections命名空间

         static void Main(string[] args)
{
Hashtable ht = new Hashtable();
ht.Add("Name1","断桥残雪1");
ht.Add("Name2", "断桥残雪2");
ht.Add("Name3", "断桥残雪3");
string j=ht["Name3"].ToString();
ht.Remove("Name2");
Console.WriteLine(j);
j = ht["Name2"].ToString(); //运行出错
Console.WriteLine(j);
Console.ReadKey();
}

Hashtable中我们可以添加一个键值对、移除一个键值对、移除所有键值对、判断哈希表中是否包含某个键值对。以上方法都蛮简单,就是有一点需要注意:使用Hashtabel对象的事例查找值时不要想当然的去弄出个Hashtable[0]这个东东,表面上编译木有问题,可是运行时问题就来了,会提示“未将对象引用设置到对象的实例”,大家要注意咯,所谓键值对嘛,最终需要用键去获取值,不能用索引,这儿也木有索引这么个说法!这句话不对,感谢园友提醒,其实如果key值为数值是可以使用Hashtable[0]来获取其value的,不过不推荐这么写,索引一多容易混淆。

对Hashtable属性的简单操作

关于Hashtable属性也不多,看下图:

亲自试验,加深印象:

         static void Main(string[] args)
{
Hashtable ht = new Hashtable();
ht.Add("Name1", "断桥残雪1");
ht.Add("Name2", "断桥残雪2");
ht.Add("Name3", "断桥残雪3");
ht.Add("Name4", "断桥残雪4");
ht.Add("Name5", "断桥残雪5"); int count = ht.Count;
Console.WriteLine("Hashtable一共有" + count + "组键值对");
bool isFixedSize = ht.IsFixedSize;
Console.WriteLine("Hashtable是否具有固定大小:" + isFixedSize);
bool isReadOnly = ht.IsReadOnly;
Console.WriteLine("Hashtable是否只读:" + isReadOnly);
ICollection keys = ht.Keys;
ICollection values = ht.Values;
foreach (var item in keys)
{
Console.WriteLine(item);
}
foreach (var item in values)
{
Console.WriteLine(item);
}
Console.ReadKey();
}

结果如下:

对Hashtable的遍历<非常实用>

既然我们前面就说了Hashtable是一个容器,那么我们就应该可以对其进行遍历,获取其所有的键和值,于是在木有看相关知识前我想当然的写下了如下代码:

             foreach (var myitem in ht)
{
Console.WriteLine(myitem.Key + "-" + myitem.Value);
}

很显然试过后错误很明显,压根编译都不能通过。那么我们我们如何才能够遍历Hashtable中的键值对呢,通过上网查资料知道了些

             foreach (DictionaryEntry myitem in ht)
{
Console.WriteLine(myitem.Key + "-" + myitem.Value);
}

我们可以使用DictionaryEntry结构,通过它可以设置或检索的字典键/值对,不过在这里使用foreach读取哈希表中的键值有点需要知道,foreach 语句是对枚举数的包装,它只允许从集合中读取,不允许写入集合。所以我们再次设置键值对的值会编译时报错

结语

双休就这么过去了,新的工作日又来了,也有更多的挑战等着我,继续吧,菜鸟成长ing

------如果你觉得此文对你有所帮助,别忘了点击下右下角的推荐咯,谢谢!------

最新文章

  1. Theano2.1.13-基础知识之PyCUDA、CUDAMat、Gnumpy的兼容
  2. matlab编译器和程序发布
  3. debian+apache+acme_tiny+lets-encrypt配置笔记
  4. Struts2文件上传和下载(原理)
  5. Codeforces Round #331 (Div. 2)
  6. DOM基础总结
  7. 被误解的 MVC 和被神化的 MVVM
  8. Android: Toolbar、AppBarLayout
  9. thinkinginjava学习笔记09_内部类
  10. YUI 的模块信息配置优先级关系梳理
  11. Linux查询已开启文件或已运行进程开启之文件fuser,lsof,pidof
  12. java8的函数式接口
  13. System.Data.SqlClient.SqlException: 数据类型 text 和 varchar 在 equal to 运算符中不兼容。
  14. spring事务详解(二)实例
  15. Mysql查询数据库表结构以及字段类型并展示
  16. ue使用
  17. JS格式化时间并比较
  18. NOIP2013 提高组 Day2
  19. 修改ElasticSearch默认的from size
  20. 数论(一)LOJ1282

热门文章

  1. 常用的HTML 标签二
  2. 模拟n步一维随机游走的情况。
  3. 【风马一族_git_github】gitGui与github的SSH
  4. Java抽象类和抽象方法例子
  5. silverlight 文本框只能输入数字
  6. nginx服务器配置多域名
  7. 卸载CentOS 5.4自带的OpenJDK,配置新的Java环境
  8. Android实现发短信与打电话的功能
  9. JS面向对象编程创建类的方式
  10. apache ab的安装步骤