如何在C#中从HashTable中获取键值?

2023年 8月 29日 109.4k 0

如何在C#中从HashTable中获取键值?

哈希表是 C# 中的非−通用集合。它存储键−值对,类似于通用的“字典”集合。 HashTable 在 System.Collections.namespace 中定义。

HashTable由键/值对组成,其中每个键都被计算为哈希码并在内部存储在不同的存储桶中。每当访问 HashTable 时,都会将该哈希码与指定键的哈希码进行匹配,从而访问相应的值。该机制优化了哈希表中的查找。

现在让我们讨论如何在 C# 中从 HashTable 获取键。

如何从哈希表中获取键?

我们可以使用两种方法从哈希表中获取键。

  • 使用 for−每个循环并通过迭代哈希表来访问键

  • 从哈希表中检索键的集合并一一显示它们。

让我们使用示例来演示这两种方法。

使用 For-Each 循环从哈希表中获取键

在这种方法中,我们声明一个带有键/值对的哈希表。然后使用 for-each 循环我们显示哈希表中的键。

为了以编程方式实现这一点,我们将使用以下哈希表。

{“US", "New York"}
{"FR", "Paris"}
{"UK", "London"}
{"IN", "Mumbai"}
{"GER", "Berlin"}

登录后复制

上面的哈希表以国家代码作为键,以值作为其对应的重要城市。

如果上面的哈希表称为 Citytable,那么我们使用 DictionaryEntry 迭代器访问它的键,如下所示 -

foreach(DictionaryEntry ele1 in Citytable){
Console.WriteLine("{0}", ele1.Key);

登录后复制

此代码将显示哈希表中的每个键。

示例 1

此方法的完整工作计划如下 -

using System;
using System.Collections;
class MyHashTable {
// Main Method
static public void Main() {

// Create a hashtable instance
Hashtable Citytable = new Hashtable();

// Adding key/value pair in the hashtable using Add() method
Citytable.Add("US", "New York");
Citytable.Add("FR", "Paris");
Citytable.Add("UK", "London");
Citytable.Add("IN", "Mumbai");
Citytable.Add("GER", "Berlin");

//Print hashtable keys
Console.WriteLine("Citytable Keys:");
foreach(DictionaryEntry ele1 in Citytable){
Console.WriteLine("{0}", ele1.Key);
}
}
}

登录后复制

在此程序中,我们声明并定义一个名为 Citytable 的哈希表,其中分别包含国家代码及其重要城市作为键/值对。使用 Add() 方法向哈希表填充值后,我们启动一个 for-each 循环,该循环使用 DictionaryEntry 类型的迭代器“ele1”来迭代 Citytable。然后对于每次迭代,都会打印键值。

输出

Citytable Keys:
FR
US
IN
GER
UK

登录后复制

正如我们所见,输出中仅显示了 Citytable 的键。这是最常见的方法,因为我们主要使用 for-each 循环来显示任何集合或数组的内容。

我们可以稍微修改上面的程序,让它显示给定键对应的值。

为此,我们必须在迭代循环中进行以下更改。

foreach(DictionaryEntry ele1 in Citytable){
Console.WriteLine("{0} = {1}", ele1.Key, ele1.Value);

登录后复制

在上面的代码中,我们现在还打印迭代计数器的值部分。

示例 2

此修改的完整程序如下 -

using System;
using System.Collections;
class MyHashTable {
// Main Method
static public void Main() {

// Create a hashtable instance
Hashtable Citytable = new Hashtable();

// Adding key/value pair in the hashtable using Add() method
Citytable.Add("US", "New York");
Citytable.Add("FR", "Paris");
Citytable.Add("UK", "London");
Citytable.Add("IN", "Mumbai");
Citytable.Add("GER", "Berlin");

//Print hashtable keys
Console.WriteLine("Citytable Keys:");
foreach(DictionaryEntry ele1 in Citytable){
Console.WriteLine("{0} = {1}", ele1.Key, ele1.Value);
}
}
}

登录后复制

输出

Citytable Keys:
FR = Paris
US = New York
IN = Mumbai
GER = Berlin
UK = London

登录后复制

因此,这里我们显示了 Citytable 的键/值对。

让我们继续下一个方法。

使用集合

在这种方法中,我们首先使用集合从 Hashtable 获取键的集合,然后打印这些键。键被打印为字符串值,这些值只不过是集合的元素。

让我们以编程语言的哈希表为例。

{"CPP", "C++"}
{"CS", "C#"}
{"JAVA", "JAVA"}
{"PL", "PERL"}
{"JS", "JAVASCRIPT"}

登录后复制

我们在程序中将上面的表定义为哈希表,Langtable。然后我们声明一个 ICollection 对象“keys”并收集该对象中的哈希表键。

ICollection keys = Langtable.Keys;

登录后复制

一旦我们获得了键集合,我们就可以轻松地迭代该集合并将每个键显示为字符串。

foreach (String k in keys){
Console.WriteLine(k);
}

登录后复制

这样,我们就可以单独显示哈希表中的每个键。

示例

此处给出了此方法的完整程序。

using System;
using System.Collections;
class MyHashTable {
// Main Method
static public void Main() {

// Create a hashtable instance
Hashtable Langtable = new Hashtable();

// Adding key/value pair in the hashtable using Add() method
Langtable.Add("CPP", "C++");
Langtable.Add("CS", "C#");
Langtable.Add("JAVA", "JAVA");
Langtable.Add("PL", "PERL");
Langtable.Add("JS", "JAVASCRIPT");

//Collection of Hashtable keys
ICollection keys = Langtable.Keys;

Console.WriteLine("Language Keys:");
foreach (String k in keys){
Console.WriteLine(k);
}
Console.ReadKey();
}
}

登录后复制

正如已经讨论的,上面的程序包含一个编程语言的哈希表,其中语言代码作为键,它们的名称作为值。我们首先使用 ICollection 对象从哈希表中检索键的集合。然后我们迭代这个对象并一一显示键。

输出

Language Keys:
PL
JS
CS
JAVA
CPP

登录后复制

因此程序显示哈希表的语言代码(键)。同样,如果我们想要每个键对应的值,我们可以通过使用给定键访问哈希表来打印它。我们将这个修改留给读者。

因此,我们可以使用上面讨论的两种方法中的任何一种从哈希表中获取(访问)哈希表键。虽然这两种方法都很简单,但我们主要使用第一种方法,即对大多数集合使用 for-each 循环来迭代哈希表。

在后续文章中,我们将讨论更多可以在 C# 中执行的 Hashtable 操作。

以上就是如何在C#中从HashTable中获取键值?的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论