哈希表:使用键来访问集合中的元素。

定义

几种基本的语法格式:

一:初始化新的空实例 System.Collections.Hashtable 类使用默认的初始容量、 加载因子、 哈希代码提供程序和比较器。

Hashtable 标识符 = new Hashtable();

二:初始化新的空实例 System.Collections.Hashtable 类使用指定的初始容量和默认加载因子、 哈希代码提供程序和比较器。

Hashtable 标识符 = new Hashtable(指定的初始容量);

三:新实例初始化 System.Collections.Hashtable 类将从指定字典的元素复制到新 System.Collections.Hashtable对象。 新 System.Collections.Hashtable 对象拥有与复制的元素数相等的初始容量并使用默认加载因子、 哈希代码提供程序和比较器。

Hashtable 标识符 = new Hashtable(其元素被复制到新哈希表的原表);

四、初始化新的空实例 System.Collections.Hashtable 类使用指定的初始容量和加载因子,默认哈希代码提供程序和比较器。

Hashtable 标识符 = new Hashtable(指定的初始容量,x);

                x:0.1 到 1.0 范围内的数字,再乘以提供最佳性能的默认值。 结果是元素与存储桶的最大比率。

加载因子:

  • 确定元素与Hashtable 可拥有的元素数的最大比率。
  • 加载因子越小,平均查找速度越快,但消耗的内存也增加。默认的加载因子 0.72通常提供速度和大小之间的最佳平衡。当创建 Hashtable 时,也可以指定其他加载因子。
  • 当向 Hashtable 添加元素时,Hashtable 的实际加载因子将增加。当实际加载因子达到指定的加载因子时,Hashtable 中存储桶的数目自动增加到大于当前 Hashtable 存储桶数两倍的最小素数。

Hashtable 类的一些常用的属性

public virtual bool IsReadOnly { get; }

官方摘要:获取一个值,该值指示 System.Collections.Hashtable 是否为只读。

返回结果:bool值:如果 System.Collections.Hashtable  是只读的,则为 true;否则为 false。 默认值为 false。

简单理解:判断是否只读。

代码示例:

Hashtable hashtable = new Hashtable();Console.WriteLine(hashtable.IsReadOnly);--->
False

public virtual bool IsFixedSize { get; }

官方摘要:获取一个值,该值指示 System.Collections.Hashtable 是否具有固定大小。

返回结果:如果System.Collections.Hashtable 具有固定大小,则为true ;否则为 false。 默认值为 false。

简单理解:获取一个值,表示 Hashtable 是否具有固定大小。

代码示例:

Hashtable hashtable = new Hashtable();Console.WriteLine(hashtable.IsFixedSize);--->
False

public virtual int Count { get; }

官方摘要:获取包含在 System.Collections.Hashtable 中的键/值对的数目。

返回结果:包含在 System.Collections.Hashtable 中的键/值对的数目。

简单理解:获取Hashtable 中包含的键值对个数。

代码示例:

Hashtable hashtable = new Hashtable();
hashtable.Add(1, "a");
hashtable.Add(2, "b");
Console.WriteLine(hashtable.Count);--->
2

Hashtable 类的一些常用的方法

public virtual void Add(object key, object value);

官方摘要:将带有指定键和值的元素添加到 System.Collections.Hashtable 中。

参数说明:

  • key:要添加的元素的键。
  • value:要添加的元素的值。 该值可以为 null。

简单理解:向 Hashtable 添加一个带有指定的键和值的元素。

代码示例:

Hashtable hashtable = new Hashtable();
hashtable.Add(1, "a");
hashtable.Add(2, "b");foreach (DictionaryEntry item in hashtable)
{Console.WriteLine(item.Key);Console.WriteLine(item.Value);
}--->
2
b
1
a

public virtual void Clear();

官方摘要:从 System.Collections.Hashtable 中移除所有元素。

简单理解:从 Hashtable 中移除所有的元素。

代码示例:

Hashtable hashtable = new Hashtable();hashtable.Add(1, "a");
hashtable.Add(2, "b");hashtable.Clear();hashtable.Add(3, "c");
hashtable.Add(4, "d");foreach (DictionaryEntry item in hashtable)
{Console.WriteLine(item.Key);Console.WriteLine(item.Value);
}--->
4
d
3
c

public virtual bool Contains(object key);

官方摘要:确定 System.Collections.Hashtable 是否包含特定键。

参数说明:

  • key:要在 System.Collections.Hashtable 中定位的键。

返回结果:如果System.Collections.Hashtable包含具有指定键的元素,则为true ;否则为 false。

简单理解:判断 Hashtable 是否包含指定的键。

代码示例:

Hashtable hashtable = new Hashtable();hashtable.Add(1, "a");
hashtable.Add(2, "b");
hashtable.Add(3, "c");
hashtable.Add(4, "d");Console.WriteLine(hashtable.Contains(2));--->
True

public virtual bool ContainsKey(object key);

官方摘要:确定 System.Collections.Hashtable 是否包含特定键。

参数说明:

  • key:要在 System.Collections.Hashtable 中定位的键。

返回结果:如果System.Collections.Hashtable包含具有指定键的元素,则为true ;否则为 false。

简单理解:判断 Hashtable 是否包含指定的键。

代码示例:

Hashtable hashtable = new Hashtable();hashtable.Add(1, "a");
hashtable.Add(2, "b");
hashtable.Add(3, "c");
hashtable.Add(4, "d");Console.WriteLine(hashtable.ContainsKey(2));--->
True

public virtual bool ContainsValue(object value);

官方摘要:确定 System.Collections.Hashtable 是否包含特定值。

参数说明:

  • value:要在 System.Collections.Hashtable 中定位的值。 该值可以为 null。

返回结果:如果System.Collections.Hashtable 包含具有指定的元素value,则为true;否则为 false。

简单理解:判断 Hashtable 是否包含指定的值。

代码示例:

Hashtable hashtable = new Hashtable();hashtable.Add(1, "a");
hashtable.Add(2, "b");
hashtable.Add(3, "c");
hashtable.Add(4, "d");Console.WriteLine(hashtable.ContainsValue("c"));--->
True

public virtual void CopyTo(Array array, int arrayIndex);

官方摘要:副本 System.Collections.Hashtable 元素到一维 System.Array 实例的指定索引位置。

参数说明:

  • array:一维 System.Array 的目标 System.Collections.DictionaryEntry 从复制对象 System.Collections.Hashtable。
    System.Array 必须具有从零开始的索引。
  • arrayIndex:array 中从零开始的索引,从此处开始复制。

简单理解:将Hashtable元素复制到一维数组。

代码示例:

Hashtable hashtable = new Hashtable();hashtable.Add(1, "a");
hashtable.Add(2, "b");
hashtable.Add(3, "c");
hashtable.Add(4, "d");object[] arr = new object[4];
hashtable.CopyTo(arr,0);foreach (DictionaryEntry item in arr)
{Console.WriteLine(item.Key);Console.WriteLine(item.Value);
}--->
4
d
3
c
2
b
1
a

public virtual void Remove(object key);

官方摘要:从 System.Collections.Hashtable 中移除带有指定键的元素。

参数说明:

  • key:要移除的元素的键。

简单理解:从 Hashtable 中移除带有指定的键的元素。

代码示例:

Hashtable hashtable = new Hashtable();hashtable.Add(1, "a");
hashtable.Add(2, "b");
hashtable.Add(3, "c");
hashtable.Add(4, "d");hashtable.Remove(3);foreach (DictionaryEntry item in hashtable)
{Console.WriteLine(item.Key);Console.WriteLine(item.Value);
}--->
4
d
2
b
1
a

通过键名获取值:

名字[键名]

哈希表中的键不可修改,只能修改键对应的值。如果对不存在的键设置值,将添加新的键值对。

名字[键名]=新的值;

Hashtable遍历:

注意:Hashtable的每个元素都是一个键/值对,因此,元素类型既不是键的类型,也不是值的类型,而是DictionaryEntry类型。

Hashtable hashtable = new Hashtable();hashtable.Add(1, "a");
hashtable.Add(2, "b");
hashtable.Add(3, "c");
hashtable.Add(4, "d");
hashtable.Add(5, "e");foreach (DictionaryEntry item in hashtable)
{Console.WriteLine(item.Key);Console.WriteLine(item.Value);
}Console.ReadKey();     --->
5
e
4
d
3
c
2
b
1
a

C# 三十二、Hashtable(哈希表)相关推荐

  1. 二十四、哈希表的原理分析及代码实现

    一.哈希表的基本介绍 散列表(Hash table,也叫哈希表),是根据关键码值(key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中的一个位置来访问记录,以加快查找的速 ...

  2. 静态树表查找算法及C语言实现,数据结构算法C语言实现(三十二)--- 9.1静态查找表...

    一.简述 静态查找表又分为顺序表.有序表.静态树表和索引表.以下只是算法的简单实现及测试,不涉及性能分析. 二.头文件 /** author:zhaoyu date:2016-7-12 */ #inc ...

  3. axi dma 寄存器配置_FPGA Xilinx Zynq 系列(三十二)AXI 接口

    大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江湖,在"闯荡江湖"."行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢. ...

  4. ASP 三十二条精华代码

    整理收藏: ASP 三十二条精华代码 1. οncοntextmenu="window.event.returnvalue=false" 将彻底屏蔽鼠标右键 <table b ...

  5. python建站部署_SpringBoot入门建站全系列(三十二)接入xxl-job分布式任务调度平台...

    SpringBoot入门建站全系列(三十二)接入xxl-job分布式任务调度平台 一.概述 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源 ...

  6. FreeSql (三十二)Aop

    FreeSql AOP 已有的功能介绍,未来为会根据用户需求不断增强. 审计 CRUD 马云说过,996是修福报.对于多数程序员来说,加班是好事...起码不是闲人,不会下岗. 当如果因为某个 sql ...

  7. NeHe OpenGL第三十二课:拾取游戏

    NeHe OpenGL第三十二课:拾取游戏 拾取, Alpha混合, Alpha测试, 排序: 这又是一个小游戏,交给的东西会很多,慢慢体会吧   欢迎来到32课. 这课大概是在我所写作已来最大的一课 ...

  8. 王茂斋拳架_王茂斋太极功(接近传奇,从读懂原著开始;吴式太极拳北派宗师王茂斋,门人杨禹廷、刘晚苍、王培生等名家辈出;《太极功源流支派论》《三十二目》)...

    王茂斋太极功(接近传奇,从读懂原著开始:吴式太极拳北派宗师王茂斋,门人杨禹廷.刘晚苍.王培生等名家辈出:<太极功源流支派论><三十二目>)电子书 ○披露杨禄躔以降之早年太极拳传 ...

  9. 第三十二章 XML基础知识概念

    文章目录 第三十二章 XML基础知识概念 attribute CDATA区域 comment content model default namespace DOM DTD(文档类型定义) eleme ...

  10. 【正点原子Linux连载】第三十二章 U-Boot启动流程详解 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

最新文章

  1. golang 命令行_如何使用Golang编写快速有趣的命令行应用程序
  2. 一个包从服务器到达客户端
  3. Microsoft.Bcl.Build 1.0.10 稳定版发布
  4. java在控制台打印余弦曲线,java打印正弦曲线示例
  5. superset mysql数据源配置_superset 性能优化1-已经使用中的superset更改默认数据源sqlite到mysql...
  6. BZOJ3638|CodeForces 280D k-Maximum Subsequence Sum
  7. LeetCode-438. 找到字符串中所有字母异位词
  8. 与计算机技术发展密切相关的科学家,关于计算机科学与技术的发展趋势探究
  9. python零基础入门视频免费-阿里云免费推出Python零基础入门在线教程视频
  10. PCM data flow - 1 - Overview
  11. 关于嵌套类的调用更新问题
  12. BLOB存储图片文件二进制数据是非对错
  13. 关于win10企业版在极域电子教室软件 v4.0 2015 豪华版的全屏控制下如何取得自由...
  14. Win10:修改电脑桌面路径
  15. 思科交换机接口配置trunk_Cisco交换机Trunk配置命令是什么?
  16. 人工智能工程师要具备的5项基本技能
  17. App应用最有效的变现方式,还能同时提升留存!
  18. 最长递增子序列 O(NlogN)算法
  19. 达梦数据库除法保留小数
  20. AjaxPro的AJAX示例

热门文章

  1. PPT2003播放多种格式的视频的方法ppt模板制作
  2. 电脑花屏是屏幕坏了吗_电脑花屏时好时坏怎么回事 电脑花屏时好时坏如何彻底解决...
  3. 服装供应链的最优方法
  4. ___71__OleDbDataReader读取Access数据库
  5. IDEA设置背景图片BackGroundImage
  6. UITextView 字数限制,正在输入字符也算进去,区分中英文字符
  7. python开发音乐播放器教程,Python挑翻音乐网,GUI实现音乐播放器,无敌Pythoner炼成记!...
  8. 【Python案例】——制作一个简易的音乐播放器【轻松入门】
  9. 苹果logo_苹果ARM Mac发布会独特Logo亮相 允许品牌在标签旁添加自定义表情_IT业界行情...
  10. WEB通信交互的几种方式