第05章:泛型集合_第1頁
第05章:泛型集合_第2頁
第05章:泛型集合_第3頁
第05章:泛型集合_第4頁
第05章:泛型集合_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第05章集合和泛型本章內(nèi)容1Java 集合2泛型講解時(shí)間:40分鐘實(shí)踐時(shí)間:20分鐘1 Java 集合1.1 集合框架Employee emp1 = new Employee();Employee emp2 = new Employee();.Employee empArray = new Employee10;/初始化數(shù)組大小公司的員工數(shù)量在不斷的變化 需要同時(shí)存儲(chǔ)員工編號(hào)和員工對(duì)象,且根據(jù)編號(hào)查找對(duì)應(yīng)的員工對(duì)象使用數(shù)組可否解決以上需求?使用集合可以解決復(fù)雜的數(shù)據(jù)存儲(chǔ)問題1.1 集合框架的概念與結(jié)構(gòu)n Java中的集合框架是指一系列存儲(chǔ)數(shù)據(jù)的接口和類,這些類和接口 都位于java.util包

2、中n 使用集合框架可以解決復(fù)雜的數(shù)據(jù)存儲(chǔ)問題,Java中內(nèi)置了豐富的 集合框架1.2 List接口Collection接口List接口存儲(chǔ)順序有序可以保存重復(fù)元素實(shí)現(xiàn)n List接口的定義1.2 List接口的定義 ArrayList用法類似于數(shù)組,且其容量可按需要?jiǎng)討B(tài)調(diào)整,亦被稱為動(dòng)態(tài)數(shù)組List接口的常用子類有:ArrayList和Vectorn List接口的常用方法List list = new ArrayList()/list接口指向?qū)崿F(xiàn)類的實(shí)例Student stu = new Student();/實(shí)例化Studentlist.add(java oop); list.add(1)

3、;/自動(dòng)裝箱將int類型自動(dòng)包裝成Integerlist.add(jsp); list.add(Stu);/添加Student對(duì)象list.remove(stu);/刪除指定的內(nèi)容list.remove(1);/ 刪除指定位置的元素for(int i=0;ilist.size();i+) System.out.println(list.get(i);/根據(jù)索引獲取指定位置的元素 list.removeAll(list);/刪除集合中的所有元素 System.out.println(list.size();/獲取集合中元素的個(gè)數(shù)1.2 List接口的定義返回類型方法名稱描述voidaddFirs

4、t()將指定元素插入此列表的開頭voidaddLast()將指定元素添加到此列表的結(jié)尾ObjectremoveFirst()移除并返回此列表的第一個(gè)元素ObjectremoveLast()移除并返回此列表的最后一個(gè)元素booleanadd(Object o)將指定的元素添加到列表中n LinkedList表示鏈表的操作類,它同時(shí)實(shí)現(xiàn)了List和Queue接口。n LinkedList中的存放元素按照先進(jìn)先出方式排序,LinkedList除實(shí)現(xiàn)上表 中的方法外,還提供如下方法 :1.2 List接口的定義import java.util.*;public class LinkedListDemo

5、 public static void main(String args) LinkedList linkedList = new LinkedList();linkedList.add(a);/向鏈表添加數(shù)據(jù)linkedList.add(b);linkedList.add(c);linkedList.addFirst(m);/在鏈表表頭增加數(shù)據(jù)linkedList.addLast(n);/在鏈表表尾增加數(shù)據(jù)System.out.println(linkedList);/輸出鏈表內(nèi)容LinkedList子類實(shí)現(xiàn)了List接口1.2 List接口的定義ArrayListVector當(dāng)元素存儲(chǔ)達(dá)到

6、指定容量時(shí),自動(dòng)增長(zhǎng)為原容量的二分之一當(dāng)元素存儲(chǔ)達(dá)到指定容量時(shí),原容量自動(dòng)增長(zhǎng)一倍非線程安全且性能更高線程安全但性能較低Vector類能夠?qū)崿F(xiàn)可增長(zhǎng)的對(duì)象數(shù)組;其大小可以根據(jù)需要增大或縮小實(shí)例化Vector: List list = new Vector()/list接口指向?qū)崿F(xiàn)類的實(shí)例n ArrayList和Vector的比較n 常用方法Vector1.3 Set接口Collection接口Set接口存儲(chǔ)順序無序不可以保存重復(fù)元素實(shí)現(xiàn)nSet接口的定義及常用子類1.3 Set接口的定義常用子類n Set接口常用子類:HashSetimport java.util.*;public class

7、 SetDemo public static void main(String args)Set set = new HashSet();set.add(apple);/添加元素set.add(orange);/添加元素set.add(pear);set.add(pear);/重復(fù)元素不能加入set.add(banana); System.out.println(set);返回類型方法描述booleanhashNext()如果有元素可迭代Objectnext()返回迭代的下一個(gè)元素n HashSet類中沒有提供根據(jù)集合索引獲取索引對(duì)應(yīng)的值的方法,因此遍歷HashSet時(shí)需要使用Iterator

8、迭代器n Iterator是對(duì)集合進(jìn)行迭代的迭代器,通過迭代器可以對(duì)集合進(jìn)行遍 歷。Iterator的主要方法如下:1.3 Set接口的定義常用子類public static void main(String args) Set set = new HashSet(); set.add(apple); set.add(orange); set.add(pear); set.add(pear);/重復(fù)元素不能加入 set.add(banana); Iterator iterator = set.iterator(); while(iterator.hasNext() System.out.pri

9、ntln(iterator.next(); 返回對(duì)set 中的元素進(jìn)行迭代的迭代器 返回迭代器的下一個(gè)元素 判斷迭代器中是否有元素可迭代 1.3 Set接口的定義常用子類1.4 Map接口Map接口以鍵值對(duì)形式存儲(chǔ)數(shù)據(jù)不允許出現(xiàn)重復(fù)鍵元素存儲(chǔ)順序無序n Map接口定義1.4 Map接口定義返回類型方法描述Objectget(Object key)根據(jù)key取得valueObjectput(Obejct k,Object v)向集合中加入元素voidclear()清除Map集合booleanisEmpty()判斷集合是否為空booleancontainsKey(Object object)判斷指

10、定的key是否存在booleancontainsValue(Object value)判斷指定的value是否存在SetkeySet()Map中所有的key的集合Objectremove(Object key)根據(jù)key刪除對(duì)應(yīng)的valueCollectionvalues()取出全部的valueintsize()獲得集合的長(zhǎng)度nMap接口常用方法如下所示1.4 Map接口的子類n Map接口的常用子類有:HashMap和Hashtable Map map = new HashMap(); map.put(bookName,java oop); map.put(author, john); ma

11、p.put(price, 50);/自動(dòng)裝箱 map.put(price, 80);/出現(xiàn)重復(fù)的鍵:price map.put(null,nothing);/空鍵 Collection col = map.values();/取出Map中全部的value Iterator iterator = col.iterator(); while(iterator.hasNext() System.out.println(iterator.next(); HashMap允許出現(xiàn)空鍵1.4 Map接口的子類nHashMap不允許出現(xiàn)重復(fù)鍵,但允許出現(xiàn)空鍵和空值 Map map = new Hashtabl

12、e(); map.put(“1”, null);/空值 map.put(null, java oop);/空鍵 Collection col = map.values(); Iterator iterator = col.iterator(); while (iterator.hasNext() System.out.println(iterator.next(); Hashtable不允許出現(xiàn)空鍵和空值1.5 泛型 public static void main(String args) List list = new ArrayList();list.add(java oop);list.

13、add(3);list.add(new Student();list.add(new Book();for(int i=0;ilist.size();i+)/list.get(i)list.get(i)該強(qiáng)制轉(zhuǎn)換成哪種類型?Java中的泛型,是指向list中添加統(tǒng)一類型的數(shù)據(jù)時(shí),不會(huì)出現(xiàn)類型轉(zhuǎn)換無法確定的問題。1.5 泛型概述n泛型在建立對(duì)象時(shí)不指定類中屬性的具體類型,而是在聲明及實(shí)例化對(duì)象時(shí)由外部指定。泛型可以提高數(shù)據(jù)安全性1.5 泛型應(yīng)用泛型定義泛型類定義泛型對(duì)象定義n 泛型的主要原理是聲明類時(shí)通過標(biāo)識(shí)表示類中某個(gè)屬性的類型,或某方法的返回值及參數(shù)類型。此時(shí)聲明和實(shí)例化類時(shí)只要指定需要的類

14、型即可 n 泛型定義包括泛型類定義和泛型對(duì)象定義,其中泛型對(duì)象 定義的應(yīng)用最為普遍 1.5 泛型應(yīng)用n 泛型對(duì)象定義 類名稱 對(duì)象名稱 = new 類名稱();List list = new ArrayList();Student stu1 = new Student();stu1.setStuName(tom);stu1.setAge(20);Student stu2 = new Student();stu2.setStuName(john);stu2.setAge(19);list.add(stu1);list.add(stu2);/list.add(java oop);/不允許將Stri

15、ng類型元素添加至集合中for(int i=0;ilist.size();i+) System.out.print(姓名:+list.get(i).getStuName()+ ); System.out.println(年齡:+list.get(i).getAge(); 統(tǒng)一集合List中元素的數(shù)據(jù)類型是Student類型 實(shí)踐練習(xí)實(shí)踐時(shí)間:20分鐘 訓(xùn)練內(nèi)容l 使用HashMap 需求說明l 定義一個(gè)字符串,統(tǒng)計(jì)字符串中每個(gè)字符的個(gè)數(shù)。如“a,d,b,d,a”l 結(jié)果為實(shí)現(xiàn)思路l使用Scanner接收鍵盤輸入的字符串l使用HashMap統(tǒng)計(jì)每個(gè)字符的個(gè)數(shù),其中key保存字符,value用來記錄字符的數(shù)量實(shí)踐練習(xí)需求說明l使用對(duì)象集合完成如下功能l1.員工信息的查看l2.刪除員工實(shí)踐時(shí)間:30分鐘實(shí)現(xiàn)思路l創(chuàng)建一個(gè)員工對(duì)象l包含員工編號(hào),員工姓名,員工性別,員工年齡 屬性l創(chuàng)建一個(gè) 員工對(duì)象的集合l初始化3條員工記錄(并使用在控制臺(tái)循環(huán)打印,顯示員工信息)l在員工集合中刪除一條員工記錄l使用集合中提供的方法刪除員工本章總結(jié)Java中的集合框架包括Collection和Map兩大基本接口;其中List、Set繼承Collection接口 A

溫馨提示

  • 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論