C# 三十二、Hashtable(哈希表)
哈希表:使用键来访问集合中的元素。
定义
几种基本的语法格式:
一:初始化新的空实例 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(哈希表)相关推荐
- 二十四、哈希表的原理分析及代码实现
一.哈希表的基本介绍 散列表(Hash table,也叫哈希表),是根据关键码值(key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中的一个位置来访问记录,以加快查找的速 ...
- 静态树表查找算法及C语言实现,数据结构算法C语言实现(三十二)--- 9.1静态查找表...
一.简述 静态查找表又分为顺序表.有序表.静态树表和索引表.以下只是算法的简单实现及测试,不涉及性能分析. 二.头文件 /** author:zhaoyu date:2016-7-12 */ #inc ...
- axi dma 寄存器配置_FPGA Xilinx Zynq 系列(三十二)AXI 接口
大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江湖,在"闯荡江湖"."行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢. ...
- ASP 三十二条精华代码
整理收藏: ASP 三十二条精华代码 1. οncοntextmenu="window.event.returnvalue=false" 将彻底屏蔽鼠标右键 <table b ...
- python建站部署_SpringBoot入门建站全系列(三十二)接入xxl-job分布式任务调度平台...
SpringBoot入门建站全系列(三十二)接入xxl-job分布式任务调度平台 一.概述 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源 ...
- FreeSql (三十二)Aop
FreeSql AOP 已有的功能介绍,未来为会根据用户需求不断增强. 审计 CRUD 马云说过,996是修福报.对于多数程序员来说,加班是好事...起码不是闲人,不会下岗. 当如果因为某个 sql ...
- NeHe OpenGL第三十二课:拾取游戏
NeHe OpenGL第三十二课:拾取游戏 拾取, Alpha混合, Alpha测试, 排序: 这又是一个小游戏,交给的东西会很多,慢慢体会吧 欢迎来到32课. 这课大概是在我所写作已来最大的一课 ...
- 王茂斋拳架_王茂斋太极功(接近传奇,从读懂原著开始;吴式太极拳北派宗师王茂斋,门人杨禹廷、刘晚苍、王培生等名家辈出;《太极功源流支派论》《三十二目》)...
王茂斋太极功(接近传奇,从读懂原著开始:吴式太极拳北派宗师王茂斋,门人杨禹廷.刘晚苍.王培生等名家辈出:<太极功源流支派论><三十二目>)电子书 ○披露杨禄躔以降之早年太极拳传 ...
- 第三十二章 XML基础知识概念
文章目录 第三十二章 XML基础知识概念 attribute CDATA区域 comment content model default namespace DOM DTD(文档类型定义) eleme ...
- 【正点原子Linux连载】第三十二章 U-Boot启动流程详解 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
最新文章
- golang 命令行_如何使用Golang编写快速有趣的命令行应用程序
- 一个包从服务器到达客户端
- Microsoft.Bcl.Build 1.0.10 稳定版发布
- java在控制台打印余弦曲线,java打印正弦曲线示例
- superset mysql数据源配置_superset 性能优化1-已经使用中的superset更改默认数据源sqlite到mysql...
- BZOJ3638|CodeForces 280D k-Maximum Subsequence Sum
- LeetCode-438. 找到字符串中所有字母异位词
- 与计算机技术发展密切相关的科学家,关于计算机科学与技术的发展趋势探究
- python零基础入门视频免费-阿里云免费推出Python零基础入门在线教程视频
- PCM data flow - 1 - Overview
- 关于嵌套类的调用更新问题
- BLOB存储图片文件二进制数据是非对错
- 关于win10企业版在极域电子教室软件 v4.0 2015 豪华版的全屏控制下如何取得自由...
- Win10:修改电脑桌面路径
- 思科交换机接口配置trunk_Cisco交换机Trunk配置命令是什么?
- 人工智能工程师要具备的5项基本技能
- App应用最有效的变现方式,还能同时提升留存!
- 最长递增子序列 O(NlogN)算法
- 达梦数据库除法保留小数
- AjaxPro的AJAX示例
热门文章
- PPT2003播放多种格式的视频的方法ppt模板制作
- 电脑花屏是屏幕坏了吗_电脑花屏时好时坏怎么回事 电脑花屏时好时坏如何彻底解决...
- 服装供应链的最优方法
- ___71__OleDbDataReader读取Access数据库
- IDEA设置背景图片BackGroundImage
- UITextView 字数限制,正在输入字符也算进去,区分中英文字符
- python开发音乐播放器教程,Python挑翻音乐网,GUI实现音乐播放器,无敌Pythoner炼成记!...
- 【Python案例】——制作一个简易的音乐播放器【轻松入门】
- 苹果logo_苹果ARM Mac发布会独特Logo亮相 允许品牌在标签旁添加自定义表情_IT业界行情...
- WEB通信交互的几种方式