Hashtable排序
生活随笔
收集整理的這篇文章主要介紹了
Hashtable排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Hashtable 的煩惱!
using?System;
using?System.Collections;
namespace?NoSortHashtable
{
????///?<summary>
????///?Summary?description?for?Class1.
????///?</summary>
????class?Class1
????{
????????///?<summary>
????????///?The?main?entry?point?for?the?application.
????????///?</summary>
????????[STAThread]
????????static?void?Main(string[]?args)
????????{
????????????Hashtable?hashTable?=?new?Hashtable();
????????????hashTable.Add("hunan","changsha");
????????????hashTable.Add("beijing","beijing");
????????????hashTable.Add("anhui","hefei");
????????????hashTable.Add("sichuan","chengdu");
????????????foreach(string?str?in?hashTable.Keys)
????????????{
????????????????Console.WriteLine(str?+?"?:?"?+?hashTable[str]);
????????????}
????????}
????}
}
打印的結果是:
??? anhui : hefei
??? hunan : changsha
????sichuan : chengdu
??? beijing : beijing
當然,產生這個結果的原因大家都知道,Hashtable內部的排序機制使然,但我現在就是不想排序,我按什么順序輸入的,就想它再怎么給我輸出,怎么辦?去Google酷了一下,卻因為不知道使用什么關鍵字去酷,結果沒有酷出好的相關問題來。
我想到,ArrayList是不排序的啊,那是不是讓ArrayList和Hastable配成良緣,那么它們的結晶就是我想要的呢,既有Hashtable的豐富功能,又可以滿足我的BT的要求(不排序),動手了。
using?System;
using?System.Collections;
namespace?NoSortHashtable
{
????/**////?<summary>
????///?Summary?description?for?NoSortedHashtable.
????///?</summary>
????public?class?NoSortHashtable?:?Hashtable
????{
????????private?ArrayList?keys?=?new?ArrayList();
????????public?NoSortHashtable()
????????{
????????}
????????
????????public?override?void?Add(object?key,?object?value)
????????{
????????????base.Add?(key,?value);
????????????keys.Add?(key);
????????}
????????public?override?ICollection?Keys
????????{
????????????get
????????????{
????????????????return?keys;
????????????}
????????}
????????public?override?void?Clear()
????????{
????????????base.Clear?();
????????????keys.Clear?();
????????}
????????public?override?void?Remove(object?key)
????????{
????????????base.Remove?(key);
????????????keys.Remove????(key);
????????}
????????public?override?IDictionaryEnumerator?GetEnumerator()
????????{
????????????return?base.GetEnumerator?();
????????}
????}
}
再試
??????????? hashTable?=?new?NoSortHashtable();
????????????hashTable.Add("hunan","changsha");
????????????hashTable.Add("beijing","beijing");
????????????hashTable.Add("anhui","hefei");
????????????hashTable.Add("sichuan","chengdu");
????????????foreach(string?str?in?hashTable.Keys)
????????????{
????????????????Console.WriteLine(str?+?"?:?"?+?hashTable[str]);
????????????}
打印結果:
??? hunan : changsha
??? beijing : beijing
??? anhui : hefei
??? sichuan : chengdu
問題解決!!
應該很早之前就有人這么解決,只是我不知道而已,高手也應該有更好的辦法,只是我想不到而已!
見笑,見諒!
using?System;
using?System.Collections;
namespace?NoSortHashtable
{
????///?<summary>
????///?Summary?description?for?Class1.
????///?</summary>
????class?Class1
????{
????????///?<summary>
????????///?The?main?entry?point?for?the?application.
????????///?</summary>
????????[STAThread]
????????static?void?Main(string[]?args)
????????{
????????????Hashtable?hashTable?=?new?Hashtable();
????????????hashTable.Add("hunan","changsha");
????????????hashTable.Add("beijing","beijing");
????????????hashTable.Add("anhui","hefei");
????????????hashTable.Add("sichuan","chengdu");
????????????foreach(string?str?in?hashTable.Keys)
????????????{
????????????????Console.WriteLine(str?+?"?:?"?+?hashTable[str]);
????????????}
????????}
????}
}
打印的結果是:
??? anhui : hefei
??? hunan : changsha
????sichuan : chengdu
??? beijing : beijing
當然,產生這個結果的原因大家都知道,Hashtable內部的排序機制使然,但我現在就是不想排序,我按什么順序輸入的,就想它再怎么給我輸出,怎么辦?去Google酷了一下,卻因為不知道使用什么關鍵字去酷,結果沒有酷出好的相關問題來。
我想到,ArrayList是不排序的啊,那是不是讓ArrayList和Hastable配成良緣,那么它們的結晶就是我想要的呢,既有Hashtable的豐富功能,又可以滿足我的BT的要求(不排序),動手了。
using?System;
using?System.Collections;
namespace?NoSortHashtable
{
????/**////?<summary>
????///?Summary?description?for?NoSortedHashtable.
????///?</summary>
????public?class?NoSortHashtable?:?Hashtable
????{
????????private?ArrayList?keys?=?new?ArrayList();
????????public?NoSortHashtable()
????????{
????????}
????????
????????public?override?void?Add(object?key,?object?value)
????????{
????????????base.Add?(key,?value);
????????????keys.Add?(key);
????????}
????????public?override?ICollection?Keys
????????{
????????????get
????????????{
????????????????return?keys;
????????????}
????????}
????????public?override?void?Clear()
????????{
????????????base.Clear?();
????????????keys.Clear?();
????????}
????????public?override?void?Remove(object?key)
????????{
????????????base.Remove?(key);
????????????keys.Remove????(key);
????????}
????????public?override?IDictionaryEnumerator?GetEnumerator()
????????{
????????????return?base.GetEnumerator?();
????????}
????}
}
再試
??????????? hashTable?=?new?NoSortHashtable();
????????????hashTable.Add("hunan","changsha");
????????????hashTable.Add("beijing","beijing");
????????????hashTable.Add("anhui","hefei");
????????????hashTable.Add("sichuan","chengdu");
????????????foreach(string?str?in?hashTable.Keys)
????????????{
????????????????Console.WriteLine(str?+?"?:?"?+?hashTable[str]);
????????????}
打印結果:
??? hunan : changsha
??? beijing : beijing
??? anhui : hefei
??? sichuan : chengdu
問題解決!!
應該很早之前就有人這么解決,只是我不知道而已,高手也應該有更好的辦法,只是我想不到而已!
見笑,見諒!
總結
以上是生活随笔為你收集整理的Hashtable排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows Vista Upgrad
- 下一篇: VC开源真的很难?