




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、常用集合簡(jiǎn)析1.集合結(jié)構(gòu)2.List容器3.泛型4.Set容器5.迭代器6.Map容器7.數(shù)據(jù)結(jié)構(gòu)8.Arrays數(shù)組工具類(lèi)8.總結(jié)集合結(jié)構(gòu)CollectionListLinkedListArrayListVectorStackSetMapHashtableHashMap集合類(lèi)結(jié)構(gòu)關(guān)系圖List容器容器List的特性:1.可以存放任何類(lèi)型的元素,元素可重復(fù)2.容器可變大小3.有序排列,可以使用索引來(lái)訪問(wèn)List的實(shí)現(xiàn)類(lèi):ArrayList,LinkedList,Vector,StackList容器容器- ArrayListArrayList:List l=new ArrayList();數(shù)組列
2、表類(lèi),沒(méi)有線程同步。常用方法:add(Object obj);/插入元素,在末尾add(int i, Object obj);/在索引i處添加元素remove(int i);/移除i索引處的元素get(int i);/獲取索引i處的方法size();列表中的元素?cái)?shù)toArray();將列表中的元素轉(zhuǎn)為數(shù)組List容器容器- LinkedListLinkedList:LinkedList l=new LinkedList();鏈表類(lèi),沒(méi)有線程同步。常用方法:addFirst(Object o);/將指定元素插入此列表的開(kāi)頭 addLast(Object o);/將指定元素插入此列表的末尾getF
3、irst();/返回此列表的第一個(gè)元素。 getLast();/返回此列表的最后一個(gè)元素。 removeFirst();/刪除列表的第一個(gè)元素removeLast();/刪除列表的最后一個(gè)元素List容器容器- Vector, StackVector,Stack:可以把Vector看作實(shí)現(xiàn)了同步的ArrayList。而Stack是一個(gè)棧類(lèi),他繼承自Vector,實(shí)現(xiàn)了先進(jìn)后出。Stack的幾個(gè)擴(kuò)展方法:empty();測(cè)試堆棧是否為空。peek();查看堆棧頂部的對(duì)象。pop();移除堆棧頂部的對(duì)象。search();返回對(duì)象在堆棧中的位置泛型泛型所謂泛型是指將類(lèi)型參數(shù)化以達(dá)到代碼復(fù)用,提高軟
4、件開(kāi)發(fā)工作效率的一種數(shù)據(jù)類(lèi)型。我們?cè)谟肔ist存儲(chǔ)和取值的時(shí)候,其實(shí)都做了裝箱,拆箱的操作。顯然大量重復(fù)的裝拆箱動(dòng)作會(huì)降低效率。eg:List l=new ArrayList () ;java的泛型規(guī)定了集合中存儲(chǔ)的數(shù)據(jù)類(lèi)型,避免了不必要的裝拆箱動(dòng)作。并且泛型可以起到檢測(cè)存儲(chǔ)類(lèi)型的作用。Set容器容器Set的特性:1.可以存放任何類(lèi)型的元素2.不可存放重復(fù)值3.無(wú)序排列,不可通過(guò)索引來(lái)訪問(wèn)Set的實(shí)現(xiàn)類(lèi):HashSetSet容器容器- HashSetHashSet:Set l=new HashSet();散列集結(jié)構(gòu),沒(méi)有線程同步。常用方法:add(Object o)/添加元素clear()/移
5、除所有元素size()/返回此set中元素的數(shù)量remove(Object o)/移除某個(gè)元素containts(Object o)/如果此 set 包含指定元素,則返回 true怎樣遍歷一個(gè)Set集合的所有元素?迭代器迭代器/用Set構(gòu)建迭代器Iterator i=set.iterator();while(i.hasNext()Object o=i.next();System.out.println(o);for(Iterator iter=set.iterator();iter.hasNext();)iter.next();迭代器的三個(gè)方法:hasNext();/判斷是否有元素可迭代nex
6、t();/返回迭代的下一個(gè)元素remove()/移除當(dāng)前元素提供一種方法訪問(wèn)一個(gè)容器對(duì)象中各個(gè)元素,而又不需暴露該對(duì)象的內(nèi)部細(xì)節(jié)。Iterator模式是用于遍歷集合類(lèi)的標(biāo)準(zhǔn)訪問(wèn)方法。它可以把訪問(wèn)邏輯從不同類(lèi)型的集合類(lèi)中抽象出來(lái),從而避免向客戶(hù)端暴露集合的內(nèi)部結(jié)構(gòu)。 Map容器容器Map的特性:1.以鍵(key)值(Value)配對(duì)的方式存放元素2.不可以包含相同的key3.散列表結(jié)構(gòu)Map的實(shí)現(xiàn)類(lèi):Hashtable,HashMapMap容器容器- HashtableHashtable:Map l=new HashTable();線程同步,任何非 null 對(duì)象都可以用作鍵或值 常用方法:pu
7、t(Object key,Object value)/將指定的key映射到valueget(Object key)/返回該key對(duì)應(yīng)的value值keySet()/返回此映射中的key的set集合values()/返回此映射中的value的Collection集合remove(Object key)/移除該key以及相應(yīng)的值Map容器容器- HashMapHashMap:Map l=new HashMap();HashMap和Hashtable方法基本相同。區(qū)別在于:HashMap是非同步,并且允許null作為key和value數(shù)據(jù)結(jié)構(gòu)鏈表:鏈表中的元素存儲(chǔ)在一條鏈的節(jié)點(diǎn)上。數(shù)組列表:動(dòng)態(tài)變化
8、容量的數(shù)組。按序存儲(chǔ)在一系列連續(xù)的空間上。散列表:以鍵-值對(duì)應(yīng)的形式存儲(chǔ)元素,他是一個(gè)無(wú)序的數(shù)據(jù)結(jié)構(gòu)。散列集:通過(guò)內(nèi)部散列碼計(jì)算元素存儲(chǔ)地址,和散列表的區(qū)別是沒(méi)有鍵值。Arrays數(shù)組工具類(lèi)數(shù)組工具類(lèi)Arrays類(lèi)提供了數(shù)組整理,比較和檢索功能。常用方法:/在數(shù)組t中,對(duì)key進(jìn)行檢索,并返回key的位置,如果不存在則返回負(fù)數(shù)int binarySearch(T t,T key)/比較數(shù)組t和t1,如果數(shù)組元素相同則返回true,否則返回falseBoolean equals(T t,T t1)/將數(shù)組中的元素填充為valvoid fill(T t,T val)/將數(shù)組元素t中,從索引star
9、tIndex到endIndex的元素填充為valvoid fill(T t,int startIndex,int endIndex,T val)/將數(shù)組按升序排序void sort(T t)/將數(shù)組元素t中,從索引startIndex到endIndex的元素升序排序void sort(T t,int startIndex,int endIndexl)/將數(shù)組轉(zhuǎn)換為L(zhǎng)istList asList(T)對(duì)象的排序規(guī)則對(duì)象的排序規(guī)則假設(shè)我們要對(duì)自定義的對(duì)象(Stu類(lèi))進(jìn)行排序,那么就需要自定義一個(gè)排序規(guī)則,比如根據(jù)年齡,或者根據(jù)姓名自定義排序規(guī)則,適用于對(duì)象之間的比較和排序。只有實(shí)現(xiàn)了Compara
10、ble接口的類(lèi)的實(shí)例才是可比較對(duì)象。public class Stu implements ComparableString name;int age;public int compareTo(Stu s) return name.hashCode()-.hashCode();compareTo:該方法用于指定排序規(guī)則,這里制定的是根據(jù)name排序,兩個(gè)對(duì)象的name屬性的哈希碼進(jìn)行比較。對(duì)象的排序規(guī)則對(duì)象的排序規(guī)則public static void main(String args) Stu s1=new Stu(Z);Stu s2=new Stu(A);Stu s3=new
11、Stu(F);Stu s=s1,s2,s3;Arrays.sort(s);for(Stu stu:s)System.out.println();測(cè)試:可以看到輸出結(jié)果是:A,F(xiàn),Z。那如果要降序排列該如何做呢?總結(jié) l集合操作注意點(diǎn):1、如果涉及到堆棧,隊(duì)列等操作,應(yīng)該考慮用List,對(duì)于需要快速插入,刪除元素,應(yīng)該使用LinkedList,如果需要快速隨機(jī)訪問(wèn)元素,應(yīng)該使用ArrayList。2、如果程序在單線程環(huán)境中,或者訪問(wèn)僅僅在一個(gè)線程中進(jìn)行,考慮非同步的類(lèi),其效率較高,如果多個(gè)線程可能同時(shí)操作一個(gè)類(lèi),應(yīng)該使用同步的類(lèi)。3、盡量返回接口而非實(shí)際的類(lèi)型,如返回List而非ArrayList,這樣如果以后需要將ArrayList換成LinkedList時(shí),客戶(hù)端代碼不用改變。這就是針對(duì)抽象編程。 4、Vector是同步的。這個(gè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 水果贈(zèng)送活動(dòng)方案
- 水調(diào)歌頭活動(dòng)方案
- 沃爾瑪年貨大王活動(dòng)方案
- 求婚vlog活動(dòng)方案
- 民謠征集活動(dòng)方案
- 歌唱指導(dǎo)活動(dòng)方案
- 河南展會(huì)配套活動(dòng)方案
- 武漢消費(fèi)促進(jìn)月活動(dòng)方案
- 永康火鍋活動(dòng)方案
- 畢業(yè)玩水活動(dòng)策劃方案
- 貴陽(yáng)出租車(chē)駕駛員從業(yè)資格證(區(qū)域)考試總題庫(kù)(含答案)
- 金川公司社會(huì)招聘試題
- 建設(shè)銀行房產(chǎn)抵押貸款合同
- 福建省初中歷史八年級(jí)期末下冊(cè)通關(guān)試卷詳細(xì)答案和解析
- 2024CSCO結(jié)直腸癌診療指南解讀
- 項(xiàng)目駐地(營(yíng)區(qū))風(fēng)險(xiǎn)評(píng)估報(bào)告
- 文化市場(chǎng)營(yíng)銷(xiāo)學(xué)智慧樹(shù)知到期末考試答案章節(jié)答案2024年四川音樂(lè)學(xué)院
- MOOC 憲法學(xué)-西南政法大學(xué) 中國(guó)大學(xué)慕課答案
- MOOC 犯罪心理學(xué)-中南財(cái)經(jīng)政法大學(xué) 中國(guó)大學(xué)慕課答案
- 20KV及以下配電網(wǎng)工程建設(shè)預(yù)算編制與計(jì)算規(guī)定
- 脂肪栓塞的護(hù)理措施
評(píng)論
0/150
提交評(píng)論