版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
集合框架本節(jié)目標(biāo)掌握集合框架包含的內(nèi)容掌握ArrayList和LinkedList的使用掌握HashSet的使用掌握HashMap的使用掌握Iterator的使用掌握泛型集合的使用學(xué)員1學(xué)員20如何存儲(chǔ)每天的新聞信息?如何存儲(chǔ)信息管理專業(yè)課程的代碼與課程信息,能夠通過代碼方便地獲得課程信息?如果并不知道程序運(yùn)行時(shí)會(huì)需要多少對(duì)象,或者需要更復(fù)雜方式存儲(chǔ)對(duì)象——可以使用Java集合框架一維數(shù)組代碼1……代碼N課程1……課程N(yùn)一一對(duì)應(yīng)新聞1……新聞N每天的新聞總數(shù)不確定,太少浪費(fèi)空間,太多空間不足存儲(chǔ)一個(gè)班學(xué)員信息,假定一個(gè)班容納20名學(xué)生為什么使用集合框架1接口CollectionListMap2具體類ArrayListLinkedListHashMap3算法Java集合框架為我們提供了一套性能優(yōu)良、使用方便的接口和類,它們位于java.util包中我們不必再重新發(fā)明輪子,只需學(xué)會(huì)如何使用它們,就可處理實(shí)際應(yīng)用中問題Collections提供了對(duì)集合進(jìn)行排序、遍歷等多種算法實(shí)現(xiàn)Java集合框架包含的內(nèi)容SetTreeSetHashSetTreeMapJava集合框架包含的內(nèi)容Collection接口存儲(chǔ)一組不唯一,無序的對(duì)象List接口存儲(chǔ)一組不唯一,有序(插入順序)的對(duì)象Set接口存儲(chǔ)一組唯一,無序的對(duì)象Map接口存儲(chǔ)一組鍵值對(duì)象,提供key到value的映射CollectionListMapSetList接口的實(shí)現(xiàn)類ArrayList實(shí)現(xiàn)了長(zhǎng)度可變的數(shù)組,在內(nèi)存中分配連續(xù)的空間。遍歷元素和隨機(jī)訪問元素的效率比較高LinkedList采用鏈表存儲(chǔ)方式。插入、刪除元素時(shí)效率比較高ListArrayListLinkedList需求描述:開發(fā)一個(gè)學(xué)生管理系統(tǒng),要求如下:(1)存儲(chǔ)學(xué)生的基本信息:學(xué)號(hào)、姓名、系別、年齡。(2)對(duì)學(xué)生信息實(shí)行增加、刪除基本操作(3)獲取學(xué)生總數(shù)。(4)逐條輸出學(xué)生的姓名和系別。通過List接口的實(shí)現(xiàn)類ArrayList實(shí)現(xiàn)該需求元素個(gè)數(shù)不確定可以獲得元素的實(shí)際個(gè)數(shù)按照存儲(chǔ)順序獲取并打印元素信息在指定位置添加學(xué)生信息刪除指定的學(xué)生信息判斷集合中是否包含某條學(xué)生信息創(chuàng)建學(xué)生類,利用有參構(gòu)造方法實(shí)現(xiàn)初始化使用ArrayList類型存儲(chǔ)Strudent類,實(shí)現(xiàn)相應(yīng)的功能。(1)添加學(xué)生基本信息。(2)獲取學(xué)生總數(shù)。(3)根據(jù)位置獲取學(xué)生基本信息并顯示。Studentno1=newStudent(2012001,"張華",20,"信息管理");Studentno2=newStudent(2012010,"王芳",20,"軟件工程");Studentno3=newStudent(2012030,"趙樂",21,"網(wǎng)絡(luò)工程");ListstudentList=newArrayList();studentList.add(no1);studentList.add(no2);studentList.add(2,no3);print(studentList);if(studentList.contains(no3)){ System.out.println("有姓名為趙樂的學(xué)生。");}else{ System.out.println("沒有姓名為趙樂的學(xué)生。");}studentList.remove(1);System.out.println("\n刪除第一個(gè)元素后:");print(studentList);studentList.remove(no3);System.out.println("\n刪除no3學(xué)生后:");print(studentList);publicstaticvoidprint(ListstuList){ System.out.println("學(xué)生總數(shù)為:"+stuList.size()+"人"); for(inti=0;i<stuList.size();i++){ Studentstu=(Student)stuList.get(i); System.out.println(i+1+":"+stu.getDept()+"系---" +stu.getSName()); } }List接口常用方法
方法名說明booleanadd(Objecto)在列表的末尾順序添加元素,起始索引位置從0開始voidadd(intindex,Objecto)在指定的索引位置添加元素。索引位置必須介于0和列表中元素個(gè)數(shù)之間intsize()返回列表中的元素個(gè)數(shù)Objectget(intindex)返回指定索引位置處的元素。取出的元素是Object類型,使用前需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換booleancontains(Objecto)判斷列表中是否存在指定元素booleanremove(Objecto)從列表中刪除元素Object remove(intindex)從列表中刪除指定位置元素,起始索引位置從0開始頻繁在集合任何位置(頭部、中間、尾部)添加、獲取、刪除學(xué)生對(duì)象插入、刪除操作頻繁時(shí),可使用LinkedList來提高效率LinkedList還額外提供對(duì)頭部和尾部元素進(jìn)行添加和刪除操作的方法Studentno1=newStudent(2012001,"張華",20,"信息管理");Studentno2=newStudent(2012010,"王芳",20,"軟件工程");Studentno3=newStudent(2012030,"趙樂",21,"網(wǎng)絡(luò)工程");LinkedListstudentList=newLinkedList();studentList.add(no1);studentList.addFirst(no2);//在集合的首部添加學(xué)生信息studentList.addLast(no3);//在集合的尾部添加學(xué)生信息StudentstudentFirst=(Student)studentList.getFirst();System.out.println("第一位學(xué)生的姓名是:"+studentFirst.getSName());StudentstudentLast=(Student)studentList.getLast();System.out.println("最后一位學(xué)生的姓名是:"+studentLast.getSName());studentList.removeFirst();//刪除第一條學(xué)生信息studentList.removeLast();//刪除最后一條學(xué)生信息//顯示刪除后學(xué)生信息System.out.println("\n刪除后學(xué)生人數(shù)為:"+studentList.size()+"人");for(inti=0;i<studentList.size();i++){ Studentstu=(Student)studentList.get(i); System.out.println(i+1+":"+stu.getDept()+"系---" +stu.getSName());}LinkedList的特殊方法方法名說明void addFirst(Objecto)在列表的首部添加元素void addLast(Objecto)在列表的末尾添加元素Object getFirst()返回列表中的第一個(gè)元素Object getLast()返回列表中的最后一個(gè)元素Object removeFirst()刪除并返回列表中的第一個(gè)元素Object removeLast()刪除并返回列表中的最后一個(gè)元素在Collection接口中,iterator()方法返回一Iterator。Iterator接口方法能以迭代方式逐個(gè)訪問集合中各個(gè)元素,并安全的從Collection中除去適當(dāng)?shù)脑?。Iterator接口中常用方法有以下幾種。booleanhasNext():判斷是否存在另一個(gè)可訪問的元素。Objectnext():返回要訪問的下一個(gè)元素。如果到達(dá)集合結(jié)尾,則拋出NoSuchElementException異常。voidremove():刪除上次訪問返回的對(duì)象。本方法必須緊跟在一個(gè)元素的訪問后執(zhí)行。如果上次訪問后集合已被修改,方法將拋出IllegalStateException。利用Iterator對(duì)象實(shí)現(xiàn)集合遍歷publicstaticvoidprint(ListstuList){ System.out.println("使用iterator遍歷,學(xué)生總數(shù)為:"+stuList.size()+"人"); Iteratort=stuList.iterator(); while(t.hasNext()){ Studentstu=(Student)t.next(); System.out.println(stu.getDept()+"系---" +stu.getSName()); } }Set接口 Set接口也是Collection的一種擴(kuò)展,而與List不同的時(shí),在Set中的對(duì)象元素不能重復(fù),也就是說你不能把同樣的東西兩次放入同一個(gè)Set容器中。它的常用具體實(shí)現(xiàn)有HashSet和TreeSet類。HashSetset=newHashSet();set.add("A");set.add("F");set.add("D");set.add("B");set.add("C");set.add("E");set.add("C");set.add(1);set.add(1);System.out.println(set);Iteratoriterator=set.iterator();while(iterator.hasNext()){ System.out.println(iterator.next());}Map接口Map接口專門處理鍵值映射數(shù)據(jù)的存儲(chǔ),可以根據(jù)鍵實(shí)現(xiàn)對(duì)值的操作最常用的實(shí)現(xiàn)類是HashMapMap接口Map接口常用方法方法名說明Objectput(Objectkey,Objectval)以“鍵-值對(duì)”的方式進(jìn)行存儲(chǔ)Objectget(Objectkey)根據(jù)鍵返回相關(guān)聯(lián)的值,如果不存在指定的鍵,返回nullObjectremove(Objectkey)刪除由指定的鍵映射的“鍵-值對(duì)”intsize()返回元素個(gè)數(shù)SetkeySet()返回鍵的集合Collectionvalues()返回值的集合boolean containsKey(Objectkey)如果存在由指定的鍵映射的“鍵-值對(duì)”,返回trueMap接口
建立國(guó)家英文簡(jiǎn)稱和中文全名間的鍵值映射,并通過key對(duì)value進(jìn)行操作,應(yīng)該如何實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)和操作呢?Map接口專門處理鍵值映射數(shù)據(jù)的存儲(chǔ),可以根據(jù)鍵實(shí)現(xiàn)對(duì)值的操作最常用的實(shí)現(xiàn)類是HashMapMap接口
publicclassHashMapTest01{ publicstaticvoidmain(String[]args){
Mapcountries=newHashMap();
countries.put("CN","中華人民共和國(guó)"); countries.put("RU","俄羅斯聯(lián)邦"); countries.put("FR","法蘭西共和國(guó)"); countries.put("US","美利堅(jiān)合眾國(guó)");
Stringcountry=(String)countries.get("CN"); System.out.println("CN對(duì)應(yīng)的國(guó)家是:"+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存儲(chǔ)多組鍵值對(duì)獲取Map元素個(gè)數(shù)刪除指定元素,判斷是否包含指定元素顯示鍵集、值集和鍵值對(duì)集獲取指定元素的值集合類對(duì)比Vector和ArrayList的異同實(shí)現(xiàn)原理相同,功能相同,很多情況下可以互用兩者的主要區(qū)別如下Vector線程安全,ArrayList重速度輕安全,線程非安全長(zhǎng)度需增長(zhǎng)時(shí),Vector默認(rèn)增長(zhǎng)一倍,ArrayList增長(zhǎng)50%Hashtable和HashMap的異同實(shí)現(xiàn)原理相同,功能相同,在很多情況下可以互用兩者的主要區(qū)別如下Hashtable繼承Dictionary類,HashMap實(shí)現(xiàn)Map接口Hashtable線程安全,HashMap線程非安全Hashtable不允許null值,HashMap允許null值開發(fā)過程中,最好使用ArrayList和HashMap迭代器Iterator如何遍歷List集合呢?方法1:通過for循環(huán)和get()方法配合實(shí)現(xiàn)遍歷方法2:通過迭代器Iterator實(shí)現(xiàn)遍歷所有集合接口和類都沒有提供相應(yīng)遍歷方法,而是由Iterator實(shí)現(xiàn)集合遍歷Collection接口的iterate()方法返回一個(gè)Iterator,然后通過Iterator接口的兩個(gè)方法可實(shí)現(xiàn)遍歷booleanhasNext():判斷是否存在另一個(gè)可訪問的元素Objectnext():返回要訪問的下一個(gè)元素泛型集合把任何類型對(duì)象通過add(Objectobj)放入List中,認(rèn)為只是Object類型通過get(intindex)取出List中元素時(shí)必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換,繁瑣而且容易出現(xiàn)異常使用Map的put(Objectkey,Objectvalue)和get(Objectkey)存取對(duì)象時(shí)存在同樣問題使用Iterator的next()方法獲取元素時(shí)存在同樣問題JDK5.0中通過引入泛型有效的解決了這個(gè)問題JDK5.0使用泛型改寫了集合框架中的所有接口和類泛型集合publicclassHashMapTest02{ publicstaticvoidmain(String[]args){
//1、使用HashMap存儲(chǔ)多組國(guó)家英文簡(jiǎn)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 消毒柜操作規(guī)程
- 2025~2026學(xué)年濟(jì)南市“市中區(qū)”八年級(jí)第一學(xué)期英語期末考試試題以及答案
- 食品安全質(zhì)量控制流程
- 2026年劇本殺運(yùn)營(yíng)公司整車服務(wù)專屬規(guī)范制度
- 2026年劇本殺運(yùn)營(yíng)公司投訴處理結(jié)果反饋管理制度
- 護(hù)理基礎(chǔ)理論課件模板
- 環(huán)保包裝材料2025年研發(fā)創(chuàng)新:中心建設(shè)可行性市場(chǎng)評(píng)估報(bào)告
- 2025年醫(yī)療健康產(chǎn)業(yè)創(chuàng)新與增長(zhǎng)報(bào)告
- 2026年農(nóng)業(yè)灌溉解決方案行業(yè)創(chuàng)新報(bào)告
- 2026年5G通信技術(shù)在工業(yè)互聯(lián)網(wǎng)中的創(chuàng)新報(bào)告
- 2026年吉林工程職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能考試必刷測(cè)試卷必考題
- 2025年中國(guó)泥炭生物肥項(xiàng)目創(chuàng)業(yè)投資方案
- 營(yíng)銷員考試題庫(kù)及答案解析
- 浙江省金華市2024-2025學(xué)年九年級(jí)上學(xué)期期末科學(xué)試題(學(xué)生版)
- 教育部人文社科一般課題申報(bào)書
- 串聯(lián)諧振耐壓試驗(yàn)原理講解
- 企業(yè)副總工作總結(jié)
- YDT 5102-2024 通信線路工程技術(shù)規(guī)范
- (正式版)DB61∕T 5002-2021 《建筑保溫與結(jié)構(gòu)一體化裝配式溫鋼復(fù)合免拆模板外保溫系統(tǒng)應(yīng)用技術(shù)規(guī)程》
- 綠色工廠知識(shí)培訓(xùn)內(nèi)容課件
- 工程創(chuàng)優(yōu)培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論