c hashtable怎麼理解,c HashTable和Dictionary的區別?

2022-07-04 07:31:54 字數 4163 閱讀 5674

1樓:匿名使用者

hastable就像是一個特殊的陣列,它有一個類似主鍵的唯一編號(類似陣列中的數字,這個鍵值是隨便寫的),和這個唯一編號又對應一個值value(值的資料型別是不受限制的)。

下面是一個適用hashtable類的例子:

using system;

using system.collections;

using system.collections.generic;

using system.text;

namespace 練習

hs.remove("003");//移除鍵值為003的記錄

if (!hs.contains("003"))

else

if (!hs.containsvalue("小l87993723"))

else

foreach (string skey in hs.keys) //通過鍵集合來遍歷hashtable

}public static void main(string args)}}

2樓:

它是一個字典,key,value的形式儲存資料.

也就是你給一個key比如hash_field["group"]就能找到這個value的引用

3樓:火沙

表示鍵/值對的集合,這些鍵/值對根據鍵的雜湊**進行組織。

4樓:

hash是根據鍵值對儲存資料的

你的那個是當hash_field物件不為空的時候根據它的那個鍵取相應的值。。。

c# hashtable和dictionary的區別?

5樓:玩轉資料處理

1:單執行緒程式中推薦使用 dictionary, 有泛型優勢, 且讀取速度較快, 容量利用更充分.

2:多執行緒程式中推薦使用 hashtable, 預設的 hashtable 允許單執行緒寫入, 多執行緒讀取, 對 hashtable 進一步呼叫 synchronized() 方法可以獲得完全執行緒安全的型別. 而 dictionary 非執行緒安全, 必須人為使用 lock 語句進行保護, 效率大減.

3:dictionary 有按插入順序排列資料的特性 (注: 但當呼叫 remove() 刪除過節點後順序被打亂), 因此在需要體現順序的情境中使用 dictionary 能獲得一定方便.

4:對於值型別,特定型別(不包括 object)的 dictionary<(of <(tkey, tvalue>)>) 的效能優於 hashtable,這是因為 hashtable 的元素屬於 object 型別,所以在儲存或檢索值型別時通常發生裝箱和取消裝箱操作。

6樓:匿名使用者

dictionary是物件導向的,採用引用型別,hashtable是值型別的

7樓:匿名使用者

我明白你的意思了

dictionary支援泛型,hashtable不支援

這是我知道的最大的區別

c#中如何使用hashtable

8樓:手機使用者

hashtable 是以鍵值對的形式儲存資料 只是他儲存資料可以是object型別的

也就是說 在 c#中任何型別的物件都可以儲存在其中比如說你現在有n個 string 型別的陣列 你想把他們都存在一個資料集中

就可以使用 hashtable

當然你也可以自己定義一些類 然後實力出物件儲存在其中

9樓:匿名使用者

hashtable中是資料都是object型別

因此在取值的時候要進行資料型別轉換

如int value =(int)hashtable["key"]

10樓:非我即仙

hashtable在system.collections的名稱空間下。

是個根據object索引鍵訪問object值的集合。

沒有泛型,使用的時候只能進行強制轉換。

dictionary只能通過string類來定義鍵值,如dictionary d;d["wang"]="王";

collectionbase只能通過數字索引來訪問,如collectionbase col;col[0]="好";

hashtable比起上述兩種型別來說有更強的訪問能力。如:

hasttable hs=new hashtable();

hs["wang"]="王";

hs[0]="好";

然而上述兩個集合類有泛型類的實現dictionary<>和list<>,可以實現強型別化。(返回的是自己定製的型別)

hashtable沒有泛型類,返回的都是object型別。使用的時候必須進行強制轉化。

11樓:匿名使用者

// 建立 hashtable 例項

system.collections.hashtable ht = new system.collections.hashtable();

// 賦值

ht["username"] = "csharpxml";

ht["password"] = "123456789";

// 或者

ht.add("age", 32);

// 讀取

// asp.net

response.write(ht["username"] + "

" + ht["password"] + "

" + ht["age"]);

// winform

messagebox.show(ht["username"].tostring() + "\r\n" + ht["password"].

tostring() + "\r\n" + ((int)ht["age"]).tostring());

c# 中hashtable的用法,請幫忙!

12樓:no4ic齍

集合型別icollection,都可以用get去獲取 也可以用set去設定, 但通常這些類都實現了索引器,即 this 用法就是["key"] 它等同get set

13樓:乘明輝

hashtable實現了索引器,因此你想取key為"two"的值,非常容易,object value = table["two"];就可以了 因為返回值是object型別,如果前提確定時string型,可以string value = (string)table["two"];

c#中如何分別獲取hashtable裡的值

14樓:匿名使用者

foreach (dictionaryentry de in hashtable)

15樓:匿名使用者

lock (this.m_hashclient)}}

c#的hashtable怎麼由值取其對應的鍵值?

16樓:

我寫的一個小例項:

hashtable ht = new hashtable();

ht.add("ht1", "111");

ht.add("ht2", "222");

ht.add("ht3", "333");

//定義一個hashtable

string key = null;

foreach (system.collections.dictionaryentry de in ht)

}response.write(key);//輸出ht2

17樓:匿名使用者

foreach( dictionaryentry de in hashtable)

; value", de.key, de.value);

} foreach(string key in hastable.keys)

; value",key,hashtable[key]}

18樓:匿名使用者

chen_liang_xin 的辦法可行

19樓:匿名使用者

要不建兩個hashtable,分別存key-value 和 value-key

C選項怎麼理解YCST怎麼理解?

c後半句不對,基因重組不能產生新的性狀。因為基因重組是已有的基因的重新組合,可以產生新的基因型和新的表現型,但不可產生新的基因和新的性狀,基因突變才可產生新的性狀。y c s t 怎麼理解?我回答一下第二個問題吧。t的主體是 在總支出的式子中有 購買,那麼 不能憑空來錢。它也是巨集觀經濟中的一個重要...

c 類是怎麼理解,c 類别範本是怎麼理解

模板類英文為class template,template的中文翻譯為模板,所以模板類的意思其實是 類的模板。顧名思義,模板類是相當於一個模具,當引數給定時,生成具體的類,也叫例項化。它的提出主要是為了減少 重複。例如,我們可以用下面的 交換兩個數b和c a b b c c a 這個交換過程與a,b...

C語言中的intp的理解,int p 怎麼理解啊??

如果要連續定義兩個指標應該是怎樣做呢?如果是第一種理解,則為 int p,q 但是測試結果,p是int指標,而q是int型別,不是指標。所以第一種理解錯誤,實際上要連續定義兩個指標必須 int p,q 所以這樣看第二種理解更靠譜一些,雖然我感覺還是有些牽強,因為這句 而 p為對p取地址,和 抵消了 ...