你問(wèn)題都沒(méi)說(shuō)清楚,,,怎么回答你啊?
專(zhuān)業(yè)領(lǐng)域包括網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、商城網(wǎng)站開(kāi)發(fā)、微信營(yíng)銷(xiāo)、系統(tǒng)平臺(tái)開(kāi)發(fā), 與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開(kāi)發(fā)公司不同,創(chuàng)新互聯(lián)建站的整合解決方案結(jié)合了幫做網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營(yíng)銷(xiāo)的理念,并將策略和執(zhí)行緊密結(jié)合,為客戶提供全網(wǎng)互聯(lián)網(wǎng)整合方案。
猜一下吧,你說(shuō)的鍵的引用指的是Dictionary嗎?
如果是的話,
首先哈希表和Dictionary都是有鍵和值組成的元素。
他們的區(qū)別就在于效率及靈活性上。
從哈希表和Dictionary的Add方法定義來(lái)看
HashTable:
public virtual void Add(
Object key,
Object value
)
Dictionary:
public void Add(
TKey key,
TValue value
)
HashTable,的key和value都是object類(lèi)型的,這樣,
HashTable ht=new HashTable();
ht.Add(1,12);
這樣子就存在一個(gè)裝箱操作(值類(lèi)型到引用類(lèi)型的類(lèi)型轉(zhuǎn)換),同樣在取值的時(shí)候又涉及到拆箱操作(引用類(lèi)型到值類(lèi)型的類(lèi)型轉(zhuǎn)換).裝箱和拆箱操作時(shí)很費(fèi)時(shí)的操作。在效率上不高。
而Dicitionary是一個(gè)泛型類(lèi),key及value的類(lèi)型是在實(shí)例化Dictionary對(duì)象時(shí)指定的,如:
Dictionaryint,int dict = new Dictionary();
dict.Add(1,12);
同樣的操作,但是這里的key和value是在實(shí)例化的時(shí)候指定的int類(lèi)型。所以這里不存在裝箱和拆箱操作。
以上是Dictionary的優(yōu)點(diǎn)。
下面是HashTable的優(yōu)點(diǎn),Dictionary的缺點(diǎn)。
如果我們所有元素的key和value是相同的類(lèi)型,使用Dictionary是最好的選擇,
但是如過(guò)有元素的key和value類(lèi)型不同的情況下,我們就要使用HashTable了,原因就是HashTable的key和value都是object類(lèi)型的,而object類(lèi)型是所有類(lèi)型的基類(lèi)。
一下是例子。
HashTable:
HashTable ht = new HashTable();
ht.Add(1,12);
ht.Add("1","12");
ht.Add(2,"12");
ht.Add("2",12);
Dictionary實(shí)現(xiàn)上面的情況就需要:
Dictionaryint,int dict = new Dictionary();
dict.Add(1,12);
Dictionarystring,string dict1 = new Dictionary();
dict1.Add("1","12");
Dictionaryint,string dict2 = new Dictionary();
dict2.Add(2,"12")
Dictionarystring,int dict3 = new Dictionary();
dict3.Add("2",12);
以上就是他們的區(qū)別了以及各自的優(yōu)缺點(diǎn)。。。
我們知道Hashtable 是線程安全的,可由多個(gè)讀取器線程或一個(gè)寫(xiě)入線程使用。
它的特點(diǎn)是:通過(guò)節(jié)點(diǎn)的關(guān)鍵碼確定節(jié)點(diǎn)的存儲(chǔ)位置,即給定節(jié)點(diǎn)的關(guān)鍵碼k,通過(guò)一定的函數(shù)關(guān)系H(散列函數(shù)),得到函數(shù)值H(k),將此值解釋為該節(jié)點(diǎn)的存儲(chǔ)地址.
HashMap 與Hashtable很相似,但HashMap 是非同步(unsynchronizded)和可以以null為關(guān)鍵碼的.
我們知道在使用內(nèi)存中的地址時(shí)是按照哪里有空閑的就使用哪里的。怎么可能一直由著我們輸入的順序給你開(kāi)放地址呢?
Public Function md5(ByVal a As String) As String
Dim tempmd5 As System.Security.Cryptography.MD5 = New System.Security.Cryptography.MD5CryptoServiceProvider()
Dim bytResult() As Byte = tempmd5.ComputeHash(System.Text.Encoding.Default.GetBytes(a))
Dim strResult As String = BitConverter.ToString(bytResult)
strResult = strResult.Replace("-", "")
Return strResult
End Function
如果要計(jì)算文件的就把參數(shù)改成字節(jié)數(shù)組就可以了,然后獲取文件GetBytes()傳進(jìn)去就可以了。