JAVA集合框架教程課件_第1頁
JAVA集合框架教程課件_第2頁
JAVA集合框架教程課件_第3頁
JAVA集合框架教程課件_第4頁
JAVA集合框架教程課件_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

JAVA中的集合框架JAVA中的集合框架學(xué)習(xí)內(nèi)容

Java語言中的集合Collection接口Set接口List接口Map接口學(xué)習(xí)內(nèi)容Java語言中的集合學(xué)習(xí)目標(biāo)該部分作為提高內(nèi)容,目標(biāo)如下:掌握J(rèn)ava集合框架學(xué)習(xí)ArrayList和LinkedList的使用掌握HashMap的使用掌握Iterator的使用泛型學(xué)習(xí)目標(biāo)該部分作為提高內(nèi)容,目標(biāo)如下:學(xué)員1學(xué)員20如何存儲每天的新聞信息?如何存儲計算機(jī)專業(yè)課程的代碼與課程信息,能夠通過代碼方便地獲得課程信息?如果并不知道程序運(yùn)行時會需要多少對象,或者需要更復(fù)雜方式存儲對象——可以使用Java集合框架一維數(shù)組代碼1……代碼N課程1……課程N(yùn)一一對應(yīng)新聞1……新聞N每天的新聞總數(shù)不確定,太少浪費(fèi)空間,太多空間不足存儲一個班學(xué)員信息,假定一個班容納20名學(xué)員為什么使用集合框架學(xué)員1學(xué)員20如何存儲每天的新聞信息?如何存儲計算機(jī)專業(yè)課程1接口CollectionListMap2具體類ArrayListLinkedListHashMap3算法Java提供了一套性能優(yōu)良、使用方便的接口和類,它們位于java.util包中。我們不必再重新發(fā)明輪子,只需學(xué)會如何使用它們。Collections提供了對集合進(jìn)行排序、遍歷等多種算法實(shí)現(xiàn)Java集合框架包含的內(nèi)容SetTreeSetHashSetTreeMap1接口CollectionListMap2具體類ArrayLJava集合框架包含的內(nèi)容Collection接口存儲一組不唯一,無序的對象List接口存儲一組不唯一,有序(插入順序)的對象Set接口存儲一組唯一,無序的對象Map接口存儲一組鍵值對象,提供key到value的映射

CollectionListMapSetJava集合框架包含的內(nèi)容Collection接口存儲一組List接口的實(shí)現(xiàn)類ArrayList實(shí)現(xiàn)了長度可變的數(shù)組,在內(nèi)存中分配連續(xù)的空間。遍歷元素和隨機(jī)訪問元素的效率比較高LinkedList采用鏈表存儲方式。插入、刪除元素時效率比較高ListArrayListLinkedListList接口的實(shí)現(xiàn)類ArrayList實(shí)現(xiàn)了長度可變的數(shù)組ArrayList集合類存儲多條角色信息,獲取角色總數(shù),逐條打印出各個角色信息通過List接口的實(shí)現(xiàn)類ArrayList實(shí)現(xiàn)該需求元素個數(shù)不確定要求獲得元素的實(shí)際個數(shù)并輸出按照存儲順序獲取并打印元素信息ArrayList集合類存儲多條角色信息,獲取角色總數(shù),逐條ArrayList集合類publicclassTest1{ publicstaticvoidmain(String[]args){ Herohr=newHero(“黃蓉”,“桃花島"); Herogj=newHero(“郭靖”,“全真派"); Herolo=newHero(“小龍女”,“古墓派"); Heroling=newHero(“令狐沖”,“華山派");

Listroles=newArrayList();

roles.add(hr); roles.add(gj); roles.add(long);

roles.add(0,ling);//添加令狐沖到指定位置

System.out.println(“共計有”+roles.size()+“個隊員。");

System.out.println("分別是:"); for(inti=0;i<roles.size();i++){ Heroh=(Hero)roles.get(i); System.out.println(h.getName()+"\t"+h.getRole()); } }}創(chuàng)建ArrayList對象并把四個角色對象放入其中輸出角色的數(shù)量獲取第i個元素

ArrayList集合類publicclassTest1編程要求:1、創(chuàng)建Hero類,成員變量:姓名、門派2、某大陸怪獸入侵,需要三個不同門派的角色組隊抵抗入侵。使用集合保存角色信息,創(chuàng)建三個角色的對象保存到中,然后遍歷集合輸出顯示,當(dāng)一個角色陣亡后,重新輸出剩下的角色集合。編程要求:編程在類Hero中

添加一個方法show(),用以打印name和role屬性的值創(chuàng)建一個類HeroTest,添加main方法,實(shí)現(xiàn)創(chuàng)建一個ArrayList,向其中添加幾個Hero對象遍歷該集合,并且對每個Hero對象調(diào)用show()方法編程在類Hero中ArrayList集合類擴(kuò)充以下幾部分功能刪除指定位置的角色刪除指定的角色判斷集合中是否包含指定角色List接口提供相應(yīng)方法remove()、contains(),直接使用即可ArrayList集合類擴(kuò)充以下幾部分功能ArrayList集合類List接口常用方法

方法名說明booleanadd(Objecto)在列表的末尾順序添加元素,起始索引位置從0開始voidadd(intindex,Objecto)在指定的索引位置添加元素。索引位置必須介于0和列表中元素個數(shù)之間intsize()返回列表中的元素個數(shù)Objectget(intindex)返回指定索引位置處的元素。取出的元素是Object類型,使用前需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換booleancontains(Objecto)判斷列表中是否存在指定元素booleanremove(Objecto)從列表中刪除元素Object remove(intindex)從列表中刪除指定位置元素,起始索引位置從0開始ArrayList集合類List接口常用方法方法名說LinkedList集合類在集合任何位置(頭部、中間、尾部)添加、獲取、刪除角色對象插入、刪除操作頻繁時,可使用LinkedList來提高效率LinkedList還額外提供對頭部和尾部元素進(jìn)行添加和刪除操作的方法LinkedList集合類在集合任何位置(頭部、中間、尾部)LinkedList集合類LinkedList的特殊方法方法名說明void addFirst(Objecto)在列表的首部添加元素void addLast(Objecto)在列表的末尾添加元素Object getFirst()返回列表中的第一個元素Object getLast()返回列表中的最后一個元素Object removeFirst()刪除并返回列表中的第一個元素Object removeLast()刪除并返回列表中的最后一個元素LinkedList集合類LinkedList的特殊方法方法編程創(chuàng)建一個類Stack,代表堆棧(其特點(diǎn)為:后進(jìn)先出),添加方法add(Objectobj)、以及delete(),添加main方法進(jìn)行驗(yàn)證,要求:使用LinkedList實(shí)現(xiàn)堆棧在向LinkedList中添加時,使用addLast()方法在從LinkedList中取出時,使用removeLast()方法編程創(chuàng)建一個類Stack,代表堆棧(其特點(diǎn)為:后進(jìn)先出),添Map接口建立國家英文簡稱和中文全名間的鍵值映射,并通過key對value進(jìn)行操作,應(yīng)該如何實(shí)現(xiàn)數(shù)據(jù)的存儲和操作呢?Map接口專門處理鍵值映射數(shù)據(jù)的存儲,可以根據(jù)鍵實(shí)現(xiàn)對值的操作最常用的實(shí)現(xiàn)類是HashMapMap接口建立國家英文簡稱和中文全名間的鍵值映射,并通過kMap接口publicclassTest{ publicstaticvoidmain(String[]args){

Mapcountries=newHashMap();

countries.put("CN","中華人民共和國"); countries.put("RU","俄羅斯聯(lián)邦"); countries.put("FR","法蘭西共和國"); countries.put("US","美利堅合眾國");

Stringcountry=(String)countries.get("CN"); System.out.println("CN對應(yīng)的國家是:"+country);

System.out.println("Map中共有"+countries.size()+"組數(shù)據(jù)");

countries.remove("FR"); System.out.println("Map中包含F(xiàn)R的key嗎?"+

countries.containsKey("FR"));

System.out.println(countries.keySet()); System.out.println(countries.values()); System.out.println(countries); }}使用HashMap存儲多組鍵值對獲取Map元素個數(shù)刪除指定元素,判斷是否包含指定元素顯示鍵集、值集和鍵值對集獲取指定元素的值Map接口publicclassTest{使用HasMap接口Map接口Map接口Map接口常用方法方法名說明Objectput(Objectkey,Objectval)以“鍵-值對”的方式進(jìn)行存儲Objectget(Objectkey)根據(jù)鍵返回相關(guān)聯(lián)的值,如果不存在指定的鍵,返回nullObjectremove(Objectkey)刪除由指定的鍵映射的“鍵-值對”intsize()返回元素個數(shù)SetkeySet()返回鍵的集合Collectionvalues()返回值的集合boolean containsKey(Objectkey)如果存在由指定的鍵映射的“鍵-值對”,返回trueMap接口Map接口常用方法方法名說明Object集合類對比Vector和ArrayList的異同實(shí)現(xiàn)原理相同,功能相同,很多情況下可以互用兩者的主要區(qū)別如下Vector線程安全,ArrayList重速度輕安全,線程非安全長度需增長時,Vector默認(rèn)增長一倍,ArrayList增長50%Hashtable和HashMap的異同實(shí)現(xiàn)原理相同,功能相同,在很多情況下可以互用兩者的主要區(qū)別如下Hashtable繼承Dictionary類,HashMap實(shí)現(xiàn)Map接口Hashtable線程安全,HashMap線程非安全Hashtable不允許null值,HashMap允許null值開發(fā)過程中,最好使用ArrayList和HashMap集合類對比Vector和ArrayList的異同開發(fā)過程中,迭代器Iterator如何遍歷List集合呢?方法1:通過for循環(huán)和get()方法配合實(shí)現(xiàn)遍歷方法2:通過迭代器Iterator實(shí)現(xiàn)遍歷所有集合接口和類都沒有提供相應(yīng)遍歷方法,而是由Iterator實(shí)現(xiàn)集合遍歷Collection接口的iterator()方法返回一個Iterator,然后通過Iterator接口的兩個方法可實(shí)現(xiàn)遍歷booleanhasNext():判斷是否存在另一個可訪問的元素Objectnext():返回要訪問的下一個元素迭代器Iterator如何遍歷List集合呢?編程:迭代List中角色信息需求說明:使用ArrayList和LinkedList存儲多個角色信息,然后統(tǒng)一使用Iterator進(jìn)行遍歷編程:迭代List中角色信息需求說明:泛型為何引入泛型?把任何類型對象通過add(Objectobj)放入List中,認(rèn)為只是Object類型通過get(intindex)取出List中元素時必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換,繁瑣而且容易出現(xiàn)異常使用Map的put(Objectkey,Objectvalue)和get(Objectkey)存取對象時存在同樣問題使用Iterator的next()方法獲取元素時存在同樣問題JDK5.0中通過引入泛型有效的解決了這個問題JDK5.0使用泛型改寫了集合框架中的所有接口和類泛型為何引入泛型?泛型publicclassTest{ publicstaticvoidmain(String[]args){ //1、創(chuàng)建多個角色對象

Herohr=newHero(“黃蓉”,“桃花島"); … //2、創(chuàng)建ArrayList集合對象并把多個角色對象放入其中

List<Hero>roles=newArrayList<Hero>(); roles.add(hr); … //roles.add(“張飛");

//3、顯示第三個元素的信息

Herohero=roles.get(2);

System.out.println("第三個角色的信息如下:"); System.out.println(hero.getName()+"\t"+hero.getRole()); //4、使用Iterator遍歷roles對象

System.out.println("\n所有角色的信息如下:"); Iterator<Hero>it=roles.iterator(); while(it.hasNext()){ hero=it.next(); System.out.println(hero.getName()+"\t"+hero.getRole());

} }}標(biāo)記元素類型標(biāo)記元素類型類型不符,出現(xiàn)編譯錯誤無需類型強(qiáng)制轉(zhuǎn)換(Hero)Heros.get(2);標(biāo)記元素類型無需類型強(qiáng)制轉(zhuǎn)換(Hero)it.next();泛型public

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論