C#中的集合(HashTable與Array類)


一、Array類

    1、Array類的屬性

序號 屬性 & 描述
1 IsFixedSize 獲取一個值,該值指示數組是否帶有固定大小。
2 IsReadOnly 獲取一個值,該值指示數組是否只讀。
3 Length 獲取一個 32 位整數,該值表示所有維度的數組中的元素總數。
4 LongLength 獲取一個 64 位整數,該值表示所有維度的數組中的元素總數。
5 Rank 獲取數組的秩(維度)。

    2、Array類的方法

序號 方法 & 描述
1 Clear 根據元素的類型,設置數組中某個范圍的元素為零、為 false 或者為 null。
2 Copy(Array, Array, Int32) 從數組的第一個元素開始復制某個范圍的元素到另一個數組的第一個元素位置。長度由一個 32 位整數指定。
3 CopyTo(Array, Int32) 從當前的一維數組中復制所有的元素到一個指定的一維數組的指定索引位置。索引由一個 32 位整數指定。
4 GetLength 獲取一個 32 位整數,該值表示指定維度的數組中的元素總數。
5 GetLongLength 獲取一個 64 位整數,該值表示指定維度的數組中的元素總數。
6 GetLowerBound 獲取數組中指定維度的下界。
7 GetType 獲取當前實例的類型。從對象(Object)繼承。
8 GetUpperBound 獲取數組中指定維度的上界。
9 GetValue(Int32) 獲取一維數組中指定位置的值。索引由一個 32 位整數指定。
10 IndexOf(Array, Object) 搜索指定的對象,返回整個一維數組中第一次出現的索引。
11 Reverse(Array) 逆轉整個一維數組中元素的順序。
12 SetValue(Object, Int32) 給一維數組中指定位置的元素設置值。索引由一個 32 位整數指定。
13 Sort(Array) 使用數組的每個元素的 IComparable 實現來排序整個一維數組中的元素。
14

ToString 返回一個表示當前對象的字符串。從對象(Object)繼承。

下面的程序演示了 Array 類的一些方法的用法:

using System; namespace ArrayApplication { class MyArray { static void Main(string[] args) { int[] list = { 34, 72, 13, 44, 25, 30, 10 }; int[] temp = list; Console.Write("原始數組: "); foreach (int i in list) { Console.Write(i + " "); } Console.WriteLine(); // 逆轉數組 Array.Reverse(temp); Console.Write("逆轉數組: "); foreach (int i in temp) { Console.Write(i + " "); } Console.WriteLine(); // 排序數組 Array.Sort(list); Console.Write("排序數組: "); foreach (int i in list) { Console.Write(i + " "); } Console.WriteLine(); Console.ReadKey(); } } }

當上面的代碼被編譯和執行時,它會產生下列結果:

原始數組: 34 72 13 44 25 30 10 逆轉數組: 10 30 25 44 13 72 34 排序數組: 10 13 25 30 34 44 72

 補充:關於Array.Copy()用法與Array.Clone()用法

class ArrayCopy
{
        static void Main(string[] args)
        {
            int[] intArray1 = { 1, 2,3,4,5,6,7,8,9,10 };

          ////復制數組 Array.Clone()方法
          /*
          Array.Clone()返回值是Object,Array.Copy返回值為void
          Array.Clone()是非靜態方法,Array.Copy為靜態方法。
          Array.Clone()會創建一個新數組,Array.Copy方法必須傳遞階數相同且有足夠元素的已有數組。
         */

       ///*Array.Clone()用法*/
       //int[] intArray2 = (int[])intArray1.Clone(); //復制數組intArray1並賦給一個新的數組; 這里需要說明的是,需要使用強制類型轉換,原因在於Clone()返回的類         型為Object
      //foreach(int i in intArray2)
      //{
      //       Console.WriteLine(i +"");
     // }
     //Console.WriteLine(intArray2.Length);//輸出新建的數組元素
     //Console.ReadKey();

      int[] intArray3 =new int[11];

      ///*Array.CopyTo(Array, Int32)用法:從當前的一維數組中復制所有的元素到一個指定的一維數組的指定索引位置。索引由一個 32 位整數指定。*/
      //intArray1.CopyTo(intArray3,1);
     //foreach (int i in intArray3)
    //{
    //      Console.WriteLine(i + "");
     //}
    //Console.ReadKey();

    ///*Array.Copy(Array,Array,Int32)用法:從數組的第一個元素開始復制某個范圍的元素到另一個數組的第一個元素位置。長度由一個 32 位整數指定。*/
    Array.Copy(intArray1,intArray3,5);//將數組intArray1中從一個位置的元素開始復制5個元素到數組intArray3中第一個位置處
    foreach (int i in intArray3)
    {
         Console.WriteLine(i + "");
   }
     Console.ReadKey();
    }

}

 

 

二、HashTable:哈希表

  1、在.NET frameworK中,HashTable是System.Collections命名空間提供的一個容器,用於處理和表現類似

keyvalue的鍵值對,其中key通常用來快速查找,key區分大小寫;value用於存儲對應key值。Hashtable中keyvalue鍵值對均為object類型,所以Hashtable可以支持任何類型的keyvalue鍵值對.

 2、哈希表的簡單操作

 在哈希表中添加一個keyvalue鍵值對:HashtableObject.Add(key,value);
在哈希表中去除某個keyvalue鍵值對:HashtableObject.Remove(key);
從哈希表中移除所有元素:           HashtableObject.Clear();
判斷哈希表是否包含特定鍵key:      HashtableObject.Contains(key);

下面的實例演示了哈希表(Hashtable)的概念:

using System; using System.Collections; namespace CollectionsApplication { class Program { static void Main(string[] args) { Hashtable ht = new Hashtable(); ht.Add("001", "Zara Ali"); ht.Add("002", "Abida Rehman"); ht.Add("003", "Joe Holzner"); ht.Add("004", "Mausam Benazir Nur"); ht.Add("005", "M. Amlan"); ht.Add("006", "M. Arif"); ht.Add("007", "Ritesh Saikia"); if (ht.ContainsValue("Nuha Ali")) { Console.WriteLine("This student name is already in the list"); } else { ht.Add("008", "Nuha Ali"); } // 獲取鍵的集合  ICollection key = ht.Keys; foreach (string k in key) { Console.WriteLine(k + ": " + ht[k]); } Console.ReadKey(); } } }

當上面的代碼被編譯和執行時,它會產生下列結果:

001: Zara Ali 002: Abida Rehman 003: Joe Holzner 004: Mausam Benazir Nur 005: M. Amlan 006: M. Arif 007: Ritesh Saikia 008: Nuha Ali

3、遍歷哈希表

 遍歷哈希表需要用到DictionaryEntry Object,代碼如下:
foreach(DictionaryEntry de in ht) fileht為一個Hashtable實例
{
   Console.WriteLine(de.Key);de.Key對應於keyvalue鍵值對key
   Console.WriteLine(de.Value);de.Key對應於keyvalue鍵值對value
}

4、對哈希表進行排序
  對哈希表進行排序在這里的定義是對keyvalue鍵值對中的key按一定規則重新排列,但是實際上這個定義是不能實現的,因為我們無法直接在Hashtable進行對key進行重新排列,如果需要Hashtable提供某種規則的輸出,可以采用一種變通的做法:
ArrayList akeys=new ArrayList(ht.Keys); file別忘了導入System.Collections
akeys.Sort(); file按字母順序進行排序
foreach(string skey in akeys)
{
   Console.Write(skey +":");
   Console.WriteLine(ht[skey]);排序后輸出
}

 

  

 

         

     

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM