如何將雜湊錶轉換為陣列?
C# 中的雜湊表集合是一個非泛型集合,其專案表示為鍵值對。每個鍵都是唯一的非空元素。另一方面,值可以重複和/或為空。
C# 中的 Hashtable 類表示雜湊表集合。此類提供了建立物件、更改集合中的專案等的相關方法。
雜湊表集合可以用 C# 中的陣列或 ArrayList 表示。在本文中,我們將討論如何將雜湊表集合轉換為陣列。
如何將雜湊錶轉換為陣列?
要將雜湊錶轉換為陣列,C# Hashtable 類提供了一個名為“CopyTo”的方法。CopyTo 方法將雜湊表專案複製到陣列中。
CopyTo 方法的原型如下所示。
語法
public virtual void CopyTo (Array array, int arrayIndex);
引數
array − 來自雜湊表的 DictionaryEntry 物件的目標位置。這是一個具有基於零的索引的一維陣列。
arrayIndex − 一個整數 (Int32) 值,指示目標陣列的基於零的索引。表示複製開始的位置。
實現
CopyTo(Array, Int32)
描述
Hashtable.CopyTo(Array, Int32) 方法將 Hashtable 的元素複製到指定索引處的一維 Array 例項。
名稱空間
System.Collections
異常
ArgumentNullException − 當目標陣列為 null 時,將引發此異常。
ArgumentOutOfRangeException − 如果指定的 arrayIndex 小於零,則引發此異常。
ArgumentException − 如果陣列是多維陣列,則引發此異常。或者,要複製的雜湊表元素大於目標陣列中的可用空間。
InvalidCastException − 當型別不匹配時,將引發此異常。即雜湊表型別不能自動轉換為目標陣列型別。從上面的原型中,我們知道 CopyTo 方法將雜湊表元素複製到指定 arrayIndex 處的陣列中。從指定陣列索引開始的陣列元素將被雜湊表元素覆蓋。
現在讓我們實現一個程式設計示例來演示 CopyTo 方法。
在這裡,我們使用以下雜湊表。
鍵 |
值 |
|---|---|
A |
FirstValue |
B |
SecondValue |
上述雜湊表元素將轉換為陣列。陣列定義如下。
索引 |
值 |
|---|---|
0 |
She |
1 |
sells |
2 |
sea |
3 |
shells |
4 |
on |
5 |
the |
6 |
sea |
7 |
shore |
示例
現在,我們將使用 CopyTo 方法將雜湊表元素複製到從索引 = 6 開始的陣列中。此轉換的完整程式如下所示。
using System;
using System.Collections;
public class MyHashtable {
public static void Main() {
// Create and initialize hashtable
var mySourceHT = new Hashtable();
mySourceHT.Add("A", "FirstValue");
mySourceHT.Add("B", "SecondValue");
// Create and initialize the one-dimensional Array.
var myArray = new String[15];
myArray[0] = "She";
myArray[1] = "sells";
myArray[2] = "sea";
myArray[3] = "shells";
myArray[4] = "on";
myArray[5] = "the";
myArray[6] = "sea";
myArray[7] = "shore";
// Display the array first
Console.WriteLine("The initial array:");
PrintValues(myArray, ' ');
// Use CopyTo method to copy hashtable items to the array at index = 6
Console.WriteLine("New array after copying hashtable items keys:");
mySourceHT.Keys.CopyTo(myArray, 6);
// Display the array values
PrintValues(myArray, ' ');
// Use CopyTo method to copy hashtable item values to the array at index
//= 6
Console.WriteLine("After copying the values, starting at index 6:");
mySourceHT.Values.CopyTo(myArray, 6);
// Display the array values
PrintValues(myArray, ' ');
}
public static void PrintValues(String[] myArr, char mySeparator) {
for (int i = 0; i < myArr.Length; i++)
Console.Write($"{mySeparator}{myArr[i]}");
Console.WriteLine();
}
}
在這個程式中,我們首先宣告並定義雜湊表。然後,我們宣告並定義陣列。接下來,使用 CopyTo 方法,我們將雜湊表元素複製到從索引 = 6 開始的陣列中。在這個程式中,首先,我們只複製雜湊表元素的鍵,然後複製值。輸出顯示陣列的所有狀態,例如初始陣列、複製雜湊表元素後的陣列等。
輸出
程式的輸出如下所示。
The initial array: She sells sea shells on the sea shore New array after copying hashtable items keys: She sells sea shells on the A B After copying the values, starting at index 6: She sells sea shells on the FirstValue SecondValue
上面的輸出顯示了初始陣列,然後顯示了複製雜湊表鍵後的陣列,然後是雜湊表值。
讓我們看另一個例子來清楚地理解 CopyTo 方法。
示例
該程式與之前的程式類似。我們在這裡更改了雜湊表。此外,我們為 CopyTo 方法使用了一個空陣列。完整的程式如下所示。
using System;
using System.Collections;
class myHashTable {
public static void Main() {
// Create a Hashtable named phonetics
Hashtable phonetics = new Hashtable();
// Add key/value pairs in phonetics
phonetics.Add("A", "Apple");
phonetics.Add("B", "Banana");
phonetics.Add("C", "Cat");
phonetics.Add("D", "Dog");
phonetics.Add("E", "Elephant");
phonetics.Add("F", "Fish");
//print hahshtable collection
Console.WriteLine("Hashtable items:");
foreach(DictionaryEntry entry in phonetics){
Console.WriteLine("{0} and {1} ", entry.Key, entry.Value);
}
// Create a one-dimensional Array named myArr
DictionaryEntry[] myArr = new DictionaryEntry[phonetics.Count];
// copy the Hashtable entries to array using the CopyTo method
phonetics.CopyTo(myArr, 0);
Console.WriteLine("Contents of Array after copying hashtable items:");
for (int i = 0; i < myArr.Length; i++)
Console.WriteLine(myArr[i].Key + " --> "+ myArr[i].Value);
}
}
在這裡,我們使用 CopyTo 方法將雜湊表的所有元素複製到一個空陣列中。由於陣列為空,因此元素從陣列的開頭複製。因此,我們為 CopyTo 方法指定索引 = 0。
輸出
程式的輸出如下所示。
Hashtable items: B and Banana C and Cat A and Apple F and Fish D and Dog E and Elephant Contents of Array after copying hashtable items: B --> Banana C --> Cat A --> Apple F --> Fish D --> Dog E --> Elephant
在輸出中,我們首先顯示雜湊表,然後顯示陣列的內容。為了清晰起見,更改了雜湊表和陣列中元素的表示方式。
在本文中,我們演示瞭如何使用 C# 的 Hashtable 類的 CopyTo 方法將雜湊表專案轉換為陣列。CopyTo 方法接受陣列和索引作為引數,因此我們可以在陣列的任何部分複製雜湊表元素,而不必從開頭開始。要將雜湊表元素複製到陣列的開頭,我們將索引指定為 0。根據指定的陣列索引,CopyTo 方法將覆蓋陣列元素(如果有)的雜湊表元素。
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP