真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ArrayList與HashSet在C#中有什么區(qū)別-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān) ArrayList與HashSet在C#中有什么區(qū)別,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、南靖ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的南靖網(wǎng)站制作公司

在C#中,數(shù)組由于是固定長(zhǎng)度的,所以常常不能滿足我們開(kāi)發(fā)的需求。

由于這種限制不方便,所以出現(xiàn)了ArrayList。

ArrayList、List

ArrayList是可變長(zhǎng)數(shù)組,你可以將任意多的數(shù)據(jù)Add到ArrayList里面。其內(nèi)部維護(hù)的數(shù)組,當(dāng)長(zhǎng)度不足時(shí),會(huì)自動(dòng)擴(kuò)容為原來(lái)的兩倍。

但是ArrayList也有一個(gè)缺點(diǎn),就是存入ArrayList里面的數(shù)據(jù)都是Object類型的,所以如果將值類型存入和取出的時(shí)候會(huì)發(fā)生裝箱、拆箱操作(就是值類型與引用類型之間的轉(zhuǎn)換),這個(gè)會(huì)影響程序性能。在.Net 2.0泛型出現(xiàn)以后,就提供了List。

List是ArrayList的泛型版本,它不再需要裝箱拆箱,直接取,直接用,它基本與ArrayList一致,不過(guò)在使用的時(shí)候要先設(shè)置好它的類型,而設(shè)置好類型之后,不是這種類型的數(shù)據(jù),是不允許Add進(jìn)去的。

就性能來(lái)說(shuō),如果要存進(jìn)數(shù)組的只有一種數(shù)據(jù),那么無(wú)疑List是最優(yōu)選擇。

List ListInt = new List();

如果一個(gè)變長(zhǎng)數(shù)組,又要存int,又要存string。那么就只能用ArrayList。

HashTable(哈希表)、Dictionary

HashTable是一種根據(jù)key查找非??斓逆I值數(shù)據(jù)結(jié)構(gòu),不能有重復(fù)key,而且由于其特點(diǎn),其長(zhǎng)度總是一個(gè)素?cái)?shù),所以擴(kuò)容后容量會(huì)比2倍大一點(diǎn)點(diǎn),加載因子為0.72f。

當(dāng)要大量使用key來(lái)查找value的時(shí)候,HashTable無(wú)疑是最有選擇,HashTable與ArrayList一樣,是非泛型的,value存進(jìn)去是object,存取會(huì)發(fā)生裝箱、拆箱,所以出現(xiàn)了Dictionary

Dictionary是HashTable的泛型版本,存取同樣快,但是不需要裝箱和拆箱了。而且,其優(yōu)化了算法,Hashtable是0.72,它的浪費(fèi)容量少了很多。

Dictionary Dic = new Dictionary();

HashSet

HashSet類,算法,存儲(chǔ)結(jié)構(gòu)都與哈希表相同,主要是設(shè)計(jì)用來(lái)做高性能集運(yùn)算的,例如對(duì)兩個(gè)集合求交集、并集、差集等。集合中包含一組不重復(fù)出現(xiàn)且無(wú)特定順序的元素。

Queue、Queue

Queue隊(duì)列,Queue泛型隊(duì)列,大學(xué)都學(xué)過(guò),隊(duì)列,先進(jìn)先出,很有用。

Stack、Stack

Stack堆棧,先進(jìn)后出。

SortedList、SortedList

SortedList集合中的數(shù)據(jù)是有序的。可以通過(guò)key來(lái)匹配數(shù)據(jù),也可以通過(guò)int下標(biāo)來(lái)獲取數(shù)據(jù)。

添加操作比ArrayList,Hashtable略慢;查找、刪除操作比ArrayList快,比Hashtable慢。

SortedDictionary

SortedDictionary相比于SortedList其性能優(yōu)化了,SortedList其內(nèi)部維護(hù)的是數(shù)組而SortedDictionary內(nèi)部維護(hù)的是紅黑樹(shù)(平衡二叉樹(shù))的一種,因此其占用的內(nèi)存,性能都好于SortedDictionary。唯一差在不能用下標(biāo)取值。

ListDictionary(單向鏈表),LinkedList(雙向鏈表)

List,ArrayList,Hashtable等容器類,其內(nèi)部維護(hù)的是數(shù)組Array來(lái),ListDictionary和LinkedList不用Array,而是用鏈表的形式來(lái)保存。鏈表大的好處就是節(jié)約內(nèi)存空間。

ListDictionary是單向鏈表。

LinkedList雙向鏈表。雙向鏈表的優(yōu)勢(shì),可以插入到任意位置。

HybridDictionary

HybridDictionary的類,充分利用了Hashtable查詢效率高和ListDictionary占用內(nèi)存空間少的優(yōu)點(diǎn),內(nèi)置了Hashtable和ListDictionary兩個(gè)容器,添加數(shù)據(jù)時(shí)內(nèi)部邏輯如下:

當(dāng)數(shù)據(jù)量小于8時(shí),Hashtable為null,用ListDictionary保存數(shù)據(jù)。

當(dāng)數(shù)據(jù)量大于8時(shí),實(shí)例化Hashtable,數(shù)據(jù)轉(zhuǎn)移到Hashtable中,然后將ListDictionary置為null。

BitArray

BitArray這個(gè)東東是用于二進(jìn)制運(yùn)算,"或"、"非"、"與"、"異或非"等這種操作,只能存true或false;

應(yīng)用場(chǎng)景

ArrayList,List:變長(zhǎng)數(shù)組;

HashTable,Dictionary:頻繁根據(jù)key查找value;

HashSet:集合運(yùn)算;

Queue、Queue:先進(jìn)先出;

Stack、Stack:堆棧,先進(jìn)先出;

SortedList、SortedList:哈希表,要通過(guò)下標(biāo),又要通過(guò)key取值時(shí),可選用;

ListDictionary:?jiǎn)蜗蜴湵?,每次添加?shù)據(jù)時(shí)都要遍歷鏈表,數(shù)據(jù)量大時(shí)效率較低,數(shù)據(jù)量較大且插入頻繁的情況下,不宜選用。

LinkedList:雙向鏈表;

HybridDictionary:未知數(shù)據(jù)量大小時(shí),可用。

SortedDictionary:SortedList的優(yōu)化版,內(nèi)部數(shù)組轉(zhuǎn)平衡二叉樹(shù)。

關(guān)于 ArrayList與HashSet在C#中有什么區(qū)別就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


文章題目:ArrayList與HashSet在C#中有什么區(qū)別-創(chuàng)新互聯(lián)
新聞來(lái)源:http://www.weahome.cn/article/dicghc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部