C#.NET 對HashTable數組進行按值排序

C#.NET 對HashTable數組進行按值排序
  最近作了一個項目,須要對一個2維數組的值進行排序而後再取出對應的Key值。開始是用HashTable作的,不過HashTable中的排序只是對Key進行排序,若是想對值進行排序得用其它辦法。下面我就把這種方法說下:

     一.咱們先假設一個二維數組,用HashTable來儲存值,固然你也能夠去其它數組類來實現,這裏就用HashTable。

   

HashTable ht=new HashTable();
ht.add("a",1);
ht.add("b",4);
ht.add("c",3);
ht.add("d",2);
 

 

我就不向裏面添加內容了,咱們假設這個數組中的Key爲字符串,Value爲Int類型(注:Value有重複值)。裏面有若干數據。咱們如今要實現的是將Value按從小到大排序,而後再取出排序事後的Key的值,請看代碼:


複製代碼
//先定義兩個一維數組,分別用來存儲Key和Value
string[] keyArray=new string[ht.Count];
int[] valueArray=new int[ht.Count];

//將HashTable中的Key和Value分別賦給上面兩個數組
//注:有關CopyTo的用法請參考相關幫助文檔
ht.Keys.CopyTo(keyArray,0); 
ht.Values.CopyTo(valueArray,0);

//下面就是對Value進行排序,固然須要按排序結果將Keys的值也做對應的排列
//Sort默認是升序排序,若是想用降序排序請在Sort排序後使用Array.Reverse()進行反向排序
Array.Sort(valueArray,keyArray);


複製代碼
 

上面的代碼已經將Value進行了升序排序,而且Key也做了相應的排列。

 這樣的話keyArray的值就成:

"a"

"d"

"c"

"b"
相關文章
相關標籤/搜索