下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《面向對象程序設計》教案第26講教學對象計算機科學技術專業(yè)授課內容10.4Set接口及實現(xiàn)類10.5Queue接口及實現(xiàn)類10.6案例學習——用集合存儲、遍歷員工記錄課程標準教學目標(一)知識目標1.掌握Set接口及實現(xiàn)類的定義和使用2.掌握Queue接口及實現(xiàn)類的定義和使用(二)能力目標1.熟練掌握HashSet和TreeSet集合的基本操作,能夠熟練使用Set集合解決實際問題2.熟練掌握Queue接口的基本操作,能夠熟練使用LinkedList解決實際問題教學方法采用講授法、演示法、討論法、案例教學。學時及分配(第1學時50分鐘)課堂講授30分鐘課堂練習20分鐘10.4Set接口及實現(xiàn)類學時及分配(第2學時50分鐘)課堂講授20分鐘課堂練習30分鐘10.5Queue接口及實現(xiàn)類10.6案例學習——用集合存儲、遍歷員工記錄知識點分析重點:HashSet和TreeSet集合的基本操作ArrayDeque類和LinkedList類的使用難點:自定義比較器教學過程設計內容方式問題導入在Connection接口中,有兩個重要接口List和Set,上節(jié)課已經(jīng)講解了List接口及其實現(xiàn)類的使用,本節(jié)課將繼續(xù)講解Connection接口的另一個子接口Set接口及其實現(xiàn)類的使用。內容要點10.4Set接口及實現(xiàn)類Set接口對象類似于數(shù)學上的集合概念,其中不允許有重復的元素。Set接口沒有定義新的方法,只包含從Collection接口繼承的方法。Set接口的常用實現(xiàn)類有:HashSet類、TreeSet類和LinkedHashSet類。10.4.1HashSet類HashSet類用散列方法存儲元素,具有最好的存取性能,但元素沒有順序。HashSet類的構造方法有:HashSet():創(chuàng)建一個空的散列集合,該集合的默認初始容量是16,默認裝填因子(loadfactor)是0.75。裝填因子決定何時對散列表進行再散列。例如,如果裝填因子為0.75(默認值),而表中超過75%的位置已經(jīng)填入元素,這個表就會用雙倍的桶數(shù)自動地進行再散列。對于大多數(shù)應用程序來說,裝填因子為75%是比較合理的。HashSet(Collectionc):用指定的集合c的元素創(chuàng)建一個散列集合。HashSet(intinitialCapacity):創(chuàng)建一個散列集合,并指定集合的初始容量。下面代碼演示了HashSet的使用。varwords=newHashSet<>();words.add("one");words.add("two");words.add("three");words.add("four");words.add("one");//不能將重復的元素添加到集合中for(varw:words)System.out.print(w+"");//fouronetwothree從結果可以看到,在向Set對象中添加元素時,重復的元素不能添加到集合中。另外,由于程序中使用的實現(xiàn)類為HashSet,它并不保證集合中元素的順序。10.4.2TreeSet類TreeSet實現(xiàn)一種樹集合,它使用紅-黑樹為元素排序,添加到TreeSet中的元素必須是可比較的,即元素的類必須實現(xiàn)Comparable<T>接口。它的操作要比HashSet慢。TreeSet類的默認構造方法創(chuàng)建一個空的樹集合,其他構造方法如下。TreeSet(Collectionc):用指定集合c中的元素創(chuàng)建一個新的樹集合,集合中的元素按自然順序排序。TreeSet(Comparatorc):創(chuàng)建一個空的樹集合,元素的排序規(guī)則按給定的比較器c的規(guī)則排序。【程序10-9】TreeSetDemo.java10.4.3對象順序創(chuàng)建TreeSet類對象時如果沒有指定比較器對象,集合中的元素按自然順序排列。所謂自然順序(naturalorder)是指集合對象實現(xiàn)了Comparable<T>接口的compareTo()方法,對象則根據(jù)該方法排序。如果試圖對沒有實現(xiàn)Comparable<T>接口的集合元素排序,將拋出ClassCastException異常。另一種排序方法是創(chuàng)建TreeSet對象時指定一個比較器對象,這樣,元素將按比較器的規(guī)則排序。如果需要指定新的比較規(guī)則,可以定義一個類實現(xiàn)Comparator<T>接口,然后為集合提供一個新的比較器。字符串的默認比較規(guī)則是按字母順序比較。假如按反順序比較,可以定義一個類實現(xiàn)Comparator<T>接口,然后用該類對象作為比較器?!境绦?0-10】實現(xiàn)字符串的降序排序DescSortDemo.java10.5Queue接口及實現(xiàn)類Queue接口是Collection的子接口,它是以先進先出(First-In-First-Out,F(xiàn)IFO)的方式排列其元素,稱為隊列(queue)。Queue接口的子接口Deque實現(xiàn)雙端隊列,ArrayDeque和LinkedList是它的兩個實現(xiàn)類。10.5.1Queue接口和Deque接口Queue接口除了提供Collection的操作外,還提供了插入、刪除和檢查操作。Queue接口的常用方法如下:booleanadd(Ee):將指定的元素e插入到隊列中。Eremove():返回隊列頭元素,同時將其刪除。Eelement():返回隊列頭元素,但不將其刪除。Deque接口實現(xiàn)雙端隊列,它支持從兩端插入和刪除元素。Deque接口中定義的基本操作方法,如表10-1所示。表10-1Deque接口常用方法操作類型隊首元素操作隊尾元素操作插入元素addFirst(e)addLast(e)offerFirst(e)offerLast(e)刪除元素removeFirst()removeLast()pollFirstpollLast()返回元素getFirst()getLast()peekFirst()peekLast()10.5.2ArrayDeque類和LinkedList類Deque的常用實現(xiàn)類包括ArrayDeque類和LinkedList類,前者是可變數(shù)組的實現(xiàn),后者是線性表的實現(xiàn)。LinkedList類比ArrayDeque類更靈活,它實現(xiàn)了線性表的所有操作,其中可以存儲null元素,但ArrayDeque對象不能存儲null??梢允褂迷鰪姷膄or循環(huán)和迭代器訪問Deque的元素。varaDeque=newArrayDeque<String>();…for(varstr:aDeque){System.out.println(str);}使用迭代器訪問Deque元素代碼如下:varaDeque=newArrayDeque<String>();…for(variter=aDeque.iterator();iter.hasNext();){System.out.println(iter.next());}【程序10-11】演示了ArrayDeque類的使用DequeDemo.java隊列的實現(xiàn)類一般不允許插入null元素,但LinkedList類是它允許null元素。如果需要經(jīng)常在線性表的頭部添加元素或在內部刪除元素,就應該使用LinkedList。這些操作在LinkedList中是常量時間,在ArrayList中是線性時間。而對定位訪問LinkedList是線性時間,ArrayList是常量時間。LinkedList的構造方法如下:LinkedList():創(chuàng)建一個空的鏈表。LinkedList(Collectionc):用集合c中的元素創(chuàng)建一個鏈表。創(chuàng)建LinkedList對象不需要指定初始容量。LinkedList類除實現(xiàn)List接口中方法外,還定義了addFirst()、getFirst()、removeFirst()、addLast()、getLast()和removeLast()等方法。注意,LinkedList同時實現(xiàn)了List接口和Queue接口?!境绦?0-12】實現(xiàn)一個10秒倒計時器CountDown.java10.5.3集合轉換集合實現(xiàn)類的構造方法一般都接受一個Collection對象,這使得可以將Collection轉換成不同類型的集合。下面是一些實現(xiàn)類的構造方法:publicArrayList(Collectionc)publicHashSet(Collectionc)publicLinkedList(Collectionc)下面代碼將一個Queue對象轉換成一個List:Queue<String>queue=newLinkedList<>();queue.add("hello");queue.add("world");List<String>myList=newArrayList(queue);以下代碼又可以將一個List對象轉換成Set對象:Set<String>set=newHashSet(myList);10.6案例研究:用集合存儲、遍歷學生信息1.問題描述設計學生類Student,屬性:學號(整型);姓名(字符串),語文成績,數(shù)學成績,英語成績和總成績,成績均為int型。程序創(chuàng)建多個學生信息存儲到集合中,學號相同時視為同一個對象,不重復存儲,遍歷集合將學生信息按總成績降序輸出到控制臺。2.設計思路(1)定義學生類,重寫方法hashCode()和equals(),用學號識別是否為重復的對象。(2)創(chuàng)建HashSet集合對象,使用泛型限定只存儲學生對象。(3)創(chuàng)建若干學生對象,把學生對象添加到集合。(4)遍歷集合,輸出學生信息到控制臺。(5)修改學生類使其實現(xiàn)Compara
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生日蛋糕合同范本
- 苗木園合同范本
- 蔬菜訂合同范本
- 褲子加工合同范本
- 認干爸的協(xié)議書
- 設備售后協(xié)議書
- 設備索賠協(xié)議書
- 請月嫂協(xié)議合同
- 建筑訂金合同范本
- 居間貸款合同協(xié)議
- 人教版高中生物必修1全冊新編教案版本
- 中國法律史-第一次平時作業(yè)-國開-參考資料
- 中外石油文化智慧樹知到期末考試答案章節(jié)答案2024年中國石油大學(華東)
- 梅蘭芳的【梅蘭芳簡介梅蘭芳簡歷】
- 《旅游電子商務》試題及答案完整版
- 蜂膠全方位介紹教學課件
- 高中語文新課標必背古詩文72篇
- 醫(yī)院收費員考試試題及答案
- 病理生理學案例復習題
- 大型船舶建造設施項目船塢及碼頭工程施工組織設計
- GB/T 20469-2006臨床實驗室設計總則
評論
0/150
提交評論