這篇文章給大家介紹數(shù)據(jù)類型中的Collection與Map是什么,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
成都網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序、集團(tuán)企業(yè)網(wǎng)站設(shè)計(jì)等服務(wù)項(xiàng)目。核心團(tuán)隊(duì)均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗(yàn),服務(wù)眾多知名企業(yè)客戶;涵蓋的客戶類型包括:玻璃鋼坐凳等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗(yàn),同時(shí)也獲得了客戶的一致認(rèn)可!
Collection 接口類型1 List:有序(存入和取出的順序一致),元素都有索引(角標(biāo)),元素可以重復(fù)。 接口類型2 Set:元素不能重復(fù),默認(rèn)不能保證順序,提供有順序?qū)崿F(xiàn)。 接口類型3 Queue:線性表隊(duì)列,有序,先進(jìn)先出數(shù)據(jù)結(jié)構(gòu)。 |--AbstractCollection:實(shí)現(xiàn)了Collection接口,不能創(chuàng)建實(shí)例,需要使用它的子實(shí)現(xiàn)類 |--AbstractList:實(shí)現(xiàn)了List接口,有序,抽象類,功能強(qiáng)大 |--ArrayList:內(nèi)部是數(shù)組數(shù)據(jù)結(jié)構(gòu),是不同步(非線程安全)的。替代了Vector。查詢的速度快 |--LinkedList:內(nèi)部是鏈表數(shù)據(jù)結(jié)構(gòu),是不同步的。增刪元素的速度很快 |--Vector:內(nèi)部是數(shù)組數(shù)據(jù)結(jié)構(gòu),是同步的。增刪,查詢都很慢,已不推薦 |--Stack:棧,先進(jìn)后出,已不推薦 |--AbstractQueue:實(shí)現(xiàn)了Queue接口,有序,迭代順序可以自然排序或者在自定義類中實(shí)現(xiàn)"Comparable"接口重寫Comparator方法進(jìn)行排序。 當(dāng)隊(duì)列中元素為null時(shí),拋出異常,而不是返回false或null 字類必須定義offer()方法,該方法不允許插入null值。依靠自然順序的優(yōu)先級(jí)隊(duì)列還不允許插入不可比較的對(duì)象 |--PriorityQueue:優(yōu)先權(quán)隊(duì)列,每次從隊(duì)列中取出的應(yīng)是具有最高優(yōu)先權(quán)的元素 能夠自動(dòng)排序的隊(duì)列,存儲(chǔ)的元素排列并不是按照元素添加的順序,而是內(nèi)部會(huì)按元素的大小順序進(jìn)行排列 |---------|--ArrayDeque:實(shí)現(xiàn)了Deque(雙端隊(duì)列,Queue的子接口),有序,非線程安全,推薦當(dāng)作?;蜿?duì)列使用。不允許放入null元素 添加,刪除,取值都有兩套接口,它們功能相同,區(qū)別是對(duì)失敗情況的處理不同。 一套接口遇到失敗就會(huì)拋出異常,另一套遇到失敗會(huì)返回特殊值(false或null)。 |--AbstractSet:實(shí)現(xiàn)了Set接口,無序,覆蓋了 equals() 和 hashCode() 方法 |--TreeSet:實(shí)現(xiàn)了NavigableSet(SortSet子接口(Set子子接口))可導(dǎo)航接口, 基于TreeMap來實(shí)現(xiàn),有序,可以自然排序或者在自定義類中實(shí)現(xiàn)"Comparable"接口重寫Comparator方法進(jìn)行排序。 |--HashSet:實(shí)現(xiàn)了Set接口,無序,采用hash算法 操作元素前,會(huì)先調(diào)用元素身上的hashcode方法,如果散列碼發(fā)生碰撞,會(huì)觸發(fā)equlas方法用于判定是否為同意個(gè)對(duì)象 JDK規(guī)定:如果兩個(gè)對(duì)象相等,他們的hashcode值必然相等,如果兩個(gè)對(duì)象的hashcode值相等,對(duì)象不一定相等 |--LinkedHashSet:雙向鏈表結(jié)構(gòu),非線程安全,基于LinkedHashMap來實(shí)現(xiàn),有序,序列順序?yàn)椴迦腠樞? list集合是可以完成對(duì)元素的增刪改查。 List:特有的常見方法:有一個(gè)共性特點(diǎn)就是都可以操作角標(biāo)。 1,添加 void add(index,element); void add(index,collection); 2,刪除; Object remove(index): 3,修改: Object set(index,element); 4,獲?。? Object get(index); int indexOf(object); int lastIndexOf(object); List subList(from,to);
LinkedList和ArrayList的區(qū)別: LinkedList采用雙向鏈表,如果需要對(duì)該種數(shù)據(jù)結(jié)構(gòu)(集合)進(jìn)行增刪操作,使用LinkedList效率更高 ArrayList是實(shí)現(xiàn)了基于動(dòng)態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu),而LinkedList是基于雙向鏈表的數(shù)據(jù)結(jié)構(gòu) 對(duì)于隨機(jī)訪問的get和set,ArrayList要優(yōu)于LinkedList,因?yàn)長(zhǎng)inkedList基于指針的移動(dòng)。 ArrayList想要get(int index)元素時(shí),直接返回index位置上的元素, 而LinkedList需要通過for循環(huán)進(jìn)行查找, 雖然LinkedList已經(jīng)在查找方法上做了優(yōu)化,比如index < size / 2,則從左邊開始查找, 反之從右邊開始查找,但是還是比ArrayList要慢。這點(diǎn)是毋庸置疑的。 ArrayList想要在指定位置插入或刪除元素時(shí),主要耗時(shí)的是System.arraycopy動(dòng)作,會(huì)移動(dòng)index后面所有的元素; LinkedList主耗時(shí)的是要先通過for循環(huán)找到index,然后直接插入或刪除。
Set存放不重復(fù)元素,默認(rèn)不能保證順序,提供有順序 /--HashSet:采用hash算法,無序 操作元素前,會(huì)先調(diào)用元素身上的hashcode方法,如果散列碼發(fā)生碰撞,會(huì)觸發(fā)equlas方法用于判定是否為同意個(gè)對(duì)象 JDK規(guī)定:如果兩個(gè)對(duì)象相等,他們的hashcode值必然相等,如果兩個(gè)對(duì)象的hashcode值相等,對(duì)象不一定相等 /--LinkedHashSet:采用hash算法,有序 /--TreeSet: 采用Tree算法,有序
Map:<key,value>:映射類,key-->value,接口,與collection對(duì)應(yīng) |--AbstractMap:實(shí)現(xiàn)了Map接口 |--HashMap:無序,非安全的,但collection框架提供方法能保證HashMap synchronized |--LinkedHahMap:有序,非安全的,迭代順序可以是插入順序或者是訪問順序 |--HashTable:無序,安全的,幾乎等效于HashTable,但線程安全還要考慮到性能問題,應(yīng)該采用ConcurrentHashMap |--TreeMap:有序,同一key值默認(rèn)為同一對(duì)象,迭代順序可以自然排序或者在自定義類中實(shí)現(xiàn)"Comparable"接口重寫Comparator方法進(jìn)行排序 |--EnumMap:枚舉映射,()內(nèi)為枚舉類,有序,迭代順序?yàn)槊杜e順序 |--IdentityHashMap:不是Map的通用實(shí)現(xiàn),允許存放相同key值,僅當(dāng)兩key值地址一樣是才認(rèn)為相等無序,非安全的,允許key和value都為null
ashTable和HashMap的區(qū)別:HasnMap幾乎完全等效HashTable HashTable線程安全,所有的操作是線程同步的,不需要線程同步的情況下使用HashMap, 如果高并發(fā)情況下,線程安全還要考慮到性能問題,應(yīng)該采用ConcurrentHashMap。 HashMap非線程安全,HashMap允許存放null的value,允許存在null的key HashTable 允許存放null的value,不允許存在null的key 迭代操作:HashMap快速失敗,HashTable安全失敗
關(guān)于數(shù)據(jù)類型中的Collection與Map是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
文章題目:數(shù)據(jù)類型中的Collection與Map是什么
文章來源:http://aaarwkj.com/article38/jeiesp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站收錄、網(wǎng)站維護(hù)、網(wǎng)站策劃、微信公眾號(hào)、全網(wǎng)營(yíng)銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)