Hashtable几种常用的遍历方法
Hashtable
在System.Collection是命名空间李Hashtable是程序员经常用到的类,它以快速检索著称,是研发人员开发当中不可缺少的利器。
Hashtable表示键/值对的集合,这些键/值对根据键的哈希代码进行组织。Hashtable的键必须是唯一的,没有有效的排序,他进行的是内在的排序。
Hashtable有以下4中遍历方式:
1、以string对象为键值遍历哈希表。
2、以自定义对象为键值遍历哈希表。
3、以DictionaryEntry对象为键值遍历哈希表。
4、通过继承IDictionaryEnumerator接口的对象来遍历哈希表。
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApp1
{
class Program
{
class Person
{
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private string email;
public string Email
{
get { return email; }
set { email = value; }
}
}
static void Main(string[] args)
{
var a = new Person
{
Age = ,
Name = "Jacky",
Email = "Jacky@gmail.com"
}; var b = new Person
{
Age = ,
Name = "Ajay",
Email = "Ajay@gmail.com"
}; var c = new Person
{
Age = ,
Name = "Bill",
Email = "Bill@gmail.com"
}; var d = new Person
{
Age = ,
Name = "Gace",
Email = "Gace@gmail.com"
}; var e = new Person
{
Age = ,
Name = "Jim",
Email = "Jim@gmail.com"
};
var ht = new Hashtable
{
{ "", a },
{ "", b },
{ "", c },
{ "", d },
{ "", e }
}; Console.WriteLine("请输入你的查询的用户名:");
var strName = Console.ReadLine(); //第一种方法
foreach (string item in ht.Keys)
{
var p = (Person)ht[item];
if (strName == p.Name)
{
Console.WriteLine("查询后的结果是:" + p.Name + "\t" + p.Email + "\t" + p.Age);
}
}
Console.WriteLine("华丽的分割线=========================================================");
//第二种方法
foreach (Person item in ht.Values)
{
if (item.Name == strName)
{
Console.WriteLine("查询后的结果是:" + item.Name + "\t" + item.Email + "\t" + item.Age);
}
}
Console.WriteLine("华丽的分割线=========================================================");
//第三种方法
foreach (DictionaryEntry item in ht)
{
if (strName == ((Person)item.Value).Name)
{
Console.WriteLine("查询后的结果是:" + ((Person)item.Value).Name + "\t" + ((Person)item.Value).Email + "\t" + ((Person)item.Value).Age);
}
}
Console.WriteLine("华丽的分割线=========================================================");
//第四种方法
IDictionaryEnumerator id = ht.GetEnumerator();
while (id.MoveNext())
{
Person p = (Person)ht[id.Key];
if (p.Name == strName)
{
Console.WriteLine("查询后的结果是:" + p.Name + "\t" + p.Email + "\t" + p.Age);
}
}
Console.ReadKey();
}
}
}
Hashtable几种常用的遍历方法的更多相关文章
- 干货:结合Scikit-learn介绍几种常用的特征选择方法
原文 http://dataunion.org/14072.html 主题 特征选择 scikit-learn 作者: Edwin Jarvis 特征选择(排序)对于数据科学家.机器学习从业者来说非 ...
- 结合Scikit-learn介绍几种常用的特征选择方法
特征选择(排序)对于数据科学家.机器学习从业者来说非常重要.好的特征选择能够提升模型的性能,更能帮助我们理解数据的特点.底层结构,这对进一步改善模型.算法都有着重要作用. 特征选择主要有两个功能: 减 ...
- [转载]Scikit-learn介绍几种常用的特征选择方法
#### [转载]原文地址:http://dataunion.org/14072.html 特征选择(排序)对于数据科学家.机器学习从业者来说非常重要.好的特征选择能够提升模型的性能,更能帮助我们理解 ...
- javascript数组常用的遍历方法
本篇文章给大家带来的内容是关于javascript数组常用的遍历方法(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 前言 本文主要介绍数组常见遍历方法:forEach.m ...
- 浅谈6种JS数组遍历方法的区别
本篇文章给大家介绍一下6种JS数组遍历方法:for.foreach.for in.for of.. each. ().each的区别.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. ...
- 两种QMultiMap的遍历方法(最好使用只读遍历器)
留个爪,备查 QMultiMap<QString, QString>& remote_map = my_obj->m_MapVersion; // ccc 这里体现了引用的好 ...
- OC中几种集合的遍历方法(数组遍历,字典遍历,集合遍历)
// 先分别初始化数组.字典和集合,然后分别用for循环.NSEnumerator枚举器和forin循环这三个方法来实现遍历 NSArray *array = @[@"yinhao" ...
- VxWorks嵌入式系统几种常用的延时方法
1 taskDelay taskDelay(n)使调用该函数的任务延时n个tick(内核时钟周期).该任务在指定的时间内主动放弃CPU,除了taskDelay(0)专用 于任务调度(将CPU交 ...
- 用C#实现的几种常用数据校验方法整理(CRC校验;LRC校验;BCC校验;累加和校验)
CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据传输检错 ...
随机推荐
- 执行Android后台任务的最佳实践
灵活执行后台任务可以帮助提升应用性能,并最小化电量损耗. Android后台任务主题包含以下三个子主题: 1. 在IntentService中执行后台任务: 2. 使用CursorLoader在后台加 ...
- 我的 FPGA 学习历程(03)—— 使用 Quaruts 自带仿真工具
在上一篇中详细的介绍了怎样创建原理图工程,这篇同样使用原理图工程新建一个多路选择器,目的是学习使用图形输入的仿真工具输入仿真激励. 新建工程,并绘制以下的原理图. 编译项目,会多出一个警告: Crit ...
- virtualbmc 使用
virtualbmc 介绍 通常情况下,我们要使用 IPMI必须使用有带外管理功能的物理机.但是在很多测试环境,我们使用的是虚拟机.virtualbmc是一个可以使用 IPMI命令来控制虚机的open ...
- Egret的Shape
class ShapeTest extends egret.DisplayObjectContainer { public constructor() { super(); this.addEvent ...
- React(六)Props属性
state 和 props 主要的区别在于 props 是不可变的,而 state 可以根据与用户交互来改变.这就是为什么有些容器组件需要定义 state 来更新和修改数据. 而子组件只能通过 pro ...
- Linux 定时任务调度(crontab命令)
crond 是Linux下用周期性的执行某种任务或者等待处理某些事件的一个守护进程,crond 进程会每分钟定期检查是否有要执行的任务,如果有要执行的任务则自动执行该任务 Linux 下的任务调度 系 ...
- ecshop 2.x 3.x sql injection/rce payload
首先,感谢ringk3y的分析:http://ringk3y.com/2018/08/31/ec ... %E6%89%A7%E8%A1%8C/ 大家跟一遍代码基本上都能弄明白漏洞的原理,整个漏洞的构 ...
- .NET平台常用的框架
转自:https://www.cnblogs.com/lhxsoft/p/8609089.html 分布式缓存框架: Microsoft Velocity:微软自家分布式缓存服务框架. Memcahe ...
- android发送短信验证码并自动获取验证码填充文本框
android注册发送短信验证码并自动获取短信,截取数字验证码填充文本框. 一.接入短信平台 首先需要选择短信平台接入,这里使用的是榛子云短信平台(http://smsow.zhenzikj.com) ...
- Python自学知识点----Day01
Linux 次方运算符** 操作系统:1).直接操纵硬件 2).将操纵硬件封装成系统调用,利用应用程序进行调用 操作系统:windows 用户群体大 macos 适用开发人员 Linux ...