首先补鼻,在Java中類(lèi)庫(kù)將接口(Interface)與實(shí)現(xiàn)(implementation)分離的饰躲。
所以主要的集合類(lèi)中首先分成兩大類(lèi)
一個(gè)是實(shí)現(xiàn)了Collection接口的集合類(lèi)其中包括三大類(lèi):
一铜涉、List? //這個(gè)集合類(lèi)是有序的纽谒,可重復(fù)的容器
(Java中的鏈表都是雙向鏈接的,意味著可以向后也可以向前遍歷和操作萨西,next/previous有鹿、hasNext/hasPrevious)
而在List中又分為
??? LinkedList--雙向鏈表,可以快速在中間添加原杂,插入印颤,刪除推薦使用add,remove。
??? ArrayList--使用循環(huán)數(shù)組實(shí)現(xiàn)的隊(duì)列穿肄,在進(jìn)行隨機(jī)訪(fǎng)問(wèn)的時(shí)候可以選擇它或者是數(shù)組年局,推薦使用get( ),和set( )。
二咸产、Set? //add拒絕重復(fù)元素
其中含有hashSet,是基于散列表的集矢否,遍歷時(shí)元素出現(xiàn)的順序并不是固定的。
還有TreeSet脑溢,這是一個(gè)有序集合僵朗,而且這個(gè)排序使用樹(shù)排序(紅黑樹(shù))進(jìn)行的。
三屑彻、Queue? //這是隊(duì)列
有Queue和LinkedList都是雙端隊(duì)列验庙。
還有優(yōu)先隊(duì)列priority queue,使用的是堆排序來(lái)進(jìn)行其中元素的排序社牲,并且remove這些方法都是按照其中的元素順序執(zhí)行
其中接口有兩個(gè)基本方法(還有其他粪薛,咱不提)
四、stack 棧結(jié)構(gòu)
一搏恤、boolean add(E element)
? 這是往實(shí)現(xiàn)了Collention接口的集合類(lèi)中添加元素违寿,一旦添加成功則返回true。
二熟空、Iterator<T> iterator()
? 這是迭代器藤巢,實(shí)現(xiàn)了Collention接口的集合類(lèi)中會(huì)提供一個(gè)迭代器,來(lái)讓你可以方便的遍歷集合中的元素息罗。
? 同時(shí)這個(gè)也是接口Iterable中需要實(shí)現(xiàn)的方法掂咒。只要實(shí)現(xiàn)了這個(gè)方法,就可以用for(E element: e)來(lái)遍歷實(shí)現(xiàn)了這個(gè)方法的集合迈喉。這個(gè)for循環(huán)默認(rèn)的使用迭代器來(lái)為我們遍歷其中的所有元素俏扩。
? 另外還有一個(gè)Iterator的接口,其中就有提供給我們對(duì)集合中的元素進(jìn)行操作的方法
E next()弊添、boolean hasNext()录淡、void remove()
迭代器是類(lèi)似于指向集合中邏輯位置相鄰兩個(gè)對(duì)象之間的位置,無(wú)論你使用(正向遍歷油坝,從第一個(gè)元素到最后一個(gè))add嫉戚,next刨裆,remove,他都是最迭代器所指的地方上一個(gè)對(duì)象彬檀。
? 而且這三個(gè)方法互相有關(guān)聯(lián)帆啃。在遍歷下一個(gè)元素時(shí)(使用next())時(shí),必須要先對(duì)是否存在下一個(gè)元素進(jìn)行判斷窍帝,否則當(dāng)已經(jīng)遍歷到最后一個(gè)元素并且再次進(jìn)行next時(shí)就會(huì)出現(xiàn)Exception努潘。而當(dāng)使用remove時(shí),必須要使用next坤学。由于我們知道迭代器指向的是對(duì)象之間并且進(jìn)行上一個(gè)對(duì)象的操作疯坤,若是一開(kāi)始就進(jìn)行remove操作,萬(wàn)一迭代器在指向第一個(gè)元素之前那么就會(huì)出現(xiàn)對(duì)不存在的元素進(jìn)行remove操作深浮。所以即使是邏輯之間相鄰的元素進(jìn)行刪除压怠,也不能連續(xù)使用remove操作。
?
? 另一個(gè)是實(shí)現(xiàn)了Map接口的集合類(lèi)
? Map(映射表)主要是用于鍵值對(duì)(Key-value)的存儲(chǔ)集合類(lèi)飞苇,鍵key一般是以字符串為準(zhǔn)
菌瘫,其中有hashMap(根據(jù)鍵的內(nèi)容進(jìn)行hash(散列)且鍵必須唯一,不對(duì)值進(jìn)行散列布卡。)雨让,和TreeMap。還有個(gè)WeakHashMap忿等,他的作用是當(dāng)對(duì)鍵的唯一引用來(lái)自散列表?xiàng)l目時(shí)宫患,這一數(shù)據(jù)結(jié)構(gòu)會(huì)與垃圾回收機(jī)制協(xié)同工作刪除鍵/值對(duì)