当前位置: 首页 > news >正文

在C#中应用哈希表(Hashtable)

一、哈希表(Hashtable)简述

  在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中key/value键值对均为object类型,所以Hashtable可以支持任何类型的key/value键值对.

二、哈希表的简单操作

 在哈希表中添加一个key/value键值对:HashtableObject.Add(key,value);
 在哈希表中去除某个key/value键值对:HashtableObject.Remove(key);
 从哈希表中移除所有元素:           HashtableObject.Clear();
 判断哈希表是否包含特定键key:      HashtableObject.Contains(key);
 下面控制台程序将包含以上所有操作:
using System;
using System.Collections; //使用Hashtable时,必须引入这个命名空间
class hashtable
{
  public static void Main()
  {
  Hashtable ht=new Hashtable(); //创建一个Hashtable实例
  ht.Add("E","e");//添加key/value键值对
  ht.Add("A","a");
  ht.Add("C","c");
  ht.Add("B","b");
  string s=(string)ht["A"];
  if(ht.Contains("E")) //判断哈希表是否包含特定键,其返回值为true或false
    Console.WriteLine("the E key:exist");
  ht.Remove("C");//移除一个key/value键值对
  Console.WriteLine(ht["A"]);//此处输出a
  ht.Clear();//移除所有元素
  Console.WriteLine(ht["A"]); //此处将不会有任何输出
  }
}

三、遍历哈希表

 遍历哈希表需要用到DictionaryEntry Object,代码如下:
foreach(DictionaryEntry de in ht)//ht为一个Hashtable实例
 {
   Console.WriteLine(de.Key);//de.Key对应于key/value键值对key
   Console.WriteLine(de.Value);//de.Key对应于key/value键值对value
 }

四、对哈希表进行排序

  对哈希表进行排序在这里的定义是对key/value键值对中的key按一定规则重新排列,但是实际上这个定义是不能实现的,因为我们无法直接在Hashtable进行对key进行重新排列,如果需要Hashtable提供某种规则的输出,可以采用一种变通的做法:
 ArrayList akeys=new ArrayList(ht.Keys); //别忘了导入System.Collections
 akeys.Sort(); //按字母顺序进行排序
 foreach(string skey in akeys)
 {
   Console.Write(skey + ":");
   Console.WriteLine(ht[skey]);//排序后输出
 }

五、简单应用

实现电子商务中的购物车,试衣间,一张物品多张图片等功能,我正在用!

转载于:https://www.cnblogs.com/draeag/archive/2007/09/10/888469.html

相关文章:

  • 《Python数据可视化编程实战》——5.2 创建3D柱状图
  • c#.net中参数修饰符ref,out ,params的区别
  • 《JavaScript设计模式》——9.10 Factory(工厂)模式
  • 以太网帧格式、IP数据报格式、TCP段格式+UDP段格式 详解
  • webgis实现技术分析
  • 《Oracle数据库性能优化方法论和最佳实践》——第3章 流程分析之数据库登录流程 3.1 数据库登录导致业务系统性能恶化案例分享...
  • 《Cisco BGP-4 命令与配置手册》——导读
  • 《Tableau 8权威指南》—— 导读
  • 《Python和Pygame游戏开发指南》——2.8 关于函数、方法、构造函数和模块中的函数(及其差别)的一些提示...
  • DataFormatString 属性语法
  • 《树莓派渗透测试实战》——1.6 树莓派的优点和缺点
  • 在HttpHandlers中使用Session
  • 《机器人爱好者(第3辑)》——导读
  • 《Android 应用案例开发大全(第3版)》——第2章,第2.4节壁纸的实现
  • c#学习网址
  • [NodeJS] 关于Buffer
  • 【347天】每日项目总结系列085(2018.01.18)
  • Android交互
  • AngularJS指令开发(1)——参数详解
  • co模块的前端实现
  • JS笔记四:作用域、变量(函数)提升
  • leetcode388. Longest Absolute File Path
  • leetcode46 Permutation 排列组合
  • OSS Web直传 (文件图片)
  • PAT A1092
  • PHP 的 SAPI 是个什么东西
  • Phpstorm怎样批量删除空行?
  • Redux 中间件分析
  • springMvc学习笔记(2)
  • supervisor 永不挂掉的进程 安装以及使用
  • 反思总结然后整装待发
  • 如何用纯 CSS 创作一个货车 loader
  • ​插件化DPI在商用WIFI中的价值
  • #stm32整理(一)flash读写
  • (2020)Java后端开发----(面试题和笔试题)
  • (3)llvm ir转换过程
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (一一四)第九章编程练习
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)可以带来幸福的一本书
  • (转)视频码率,帧率和分辨率的联系与区别
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .net Application的目录
  • .NET Micro Framework初体验(二)
  • .Net6使用WebSocket与前端进行通信
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [ C++ ] STL_list 使用及其模拟实现
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [1181]linux两台服务器之间传输文件和文件夹