如何获取哈希表元素作为排序数组?

如何获取哈希表元素作为排序数组?

哈希表是根据键的哈希码排列的键值对的非通用集合。哈希表用于创建使用哈希表进行存储的集合。哈希表通过计算每个键的哈希码并将其存储在内部篮子中来优化查找。当我们从哈希表中访问特定值时,该哈希码与指定的键相匹配。

此哈希表集合在 C# 的 System.Collections 命名空间中定义。表示哈希表集合的类是“Hashtable”类。此类提供构造函数、方法和属性来操作哈希表集合。默认情况下,哈希表集合是未排序的。如果我们想要一个排序的哈希表集合,我们需要将其表示为 Array 或 ArrayList 的形式,并对元素进行排序。

在本文中,我们将了解如何获取排序数组形式的哈希表元素。那么让我们开始吧。

获取哈希表元素作为排序数组

我们知道,默认情况下,哈希表集合是未排序的。对哈希表集合进行排序可能非常困难,因为我们根据键创建哈希表集合,然后向每个键添加值。

如果我们想要对哈希表集合进行排序,我们必须根据键或值对其进行排序。 Hashtable 类中没有直接的方法对哈希表集合进行排序。所以我们必须求助于其他方法。

其中一种方法是将哈希表元素(键或值)作为排序数组获取。为此,我们将遵循下面列出的步骤。

  • 创建哈希表对象

  • 用键值对填充此对象

  • 创建一个字符串类型的数组,长度=哈希表的长度

  • 根据键遍历哈希表,并用每个键填充数组

  • 对生成的数组进行排序

示例

我们使用 C# 编写了此方法,如下所示。

using System; using System.Collections; class Program { public static void Main() { // Create a Hashtable Hashtable langCodes = new Hashtable(); // Add elements to the Hashtable langCodes.Add("C++", "CPlusPlus"); langCodes.Add("C#", "CSharp"); langCodes.Add("Java", "Java"); langCodes.Add("PL", "Perl"); langCodes.Add("PG", "Prolog"); int k = langCodes.Count; // create array of length = hashtable length string[] sortedArray = new string[k]; // Retrieve key values in Array int i = 0; Console.WriteLine("Hashtable langCodes Contents:"); foreach (DictionaryEntry de in langCodes) { Console.WriteLine("{0} ({1}) ", de.Key, de.Value); sortedArray[i] = de.Key.ToString(); i++; } Array.Sort(sortedArray); Console.WriteLine("Contents of sorted array based on Hashtable keys:"); foreach (var item in sortedArray) { Console.WriteLine(item); } } } 登录后复制