第5講_集合_201602_第1頁
第5講_集合_201602_第2頁
第5講_集合_201602_第3頁
第5講_集合_201602_第4頁
第5講_集合_201602_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1Java核心技術(上)核心技術(上)主講:蔣世忠主講:蔣世忠第5講 集合類集合類概述 為什么出現(xiàn)集合類?為什么出現(xiàn)集合類?面向對象語言對事物的體現(xiàn)都是以對象的形式,所面向對象語言對事物的體現(xiàn)都是以對象的形式,所以為了方便對多個對象的操作,以為了方便對多個對象的操作,Java就提供了集合就提供了集合類類。 數(shù)組和集合類同是容器,有何不同?數(shù)組和集合類同是容器,有何不同?數(shù)組雖然也可以存儲對象,但長度是固定的;集合數(shù)組雖然也可以存儲對象,但長度是固定的;集合長度是可變的。數(shù)組中可以存儲基本數(shù)據(jù)類型,集長度是可變的。數(shù)組中可以存儲基本數(shù)據(jù)類型,集合只能存儲對象。合只能存儲對象。 集合類的特點集合類

2、的特點集合只用于存儲對象,集合長度是可變的,集合可集合只用于存儲對象,集合長度是可變的,集合可以存儲不同類型的對象。以存儲不同類型的對象。Collection接口概述 Collection接口概述接口概述Collection 層次結構中的根接口。層次結構中的根接口。Collection 表示表示一組對象,這些對象也稱為一組對象,這些對象也稱為 collection 的元素。一的元素。一些些 collection 允許有重復的元素,而另一些則不允允許有重復的元素,而另一些則不允許。一些許。一些 collection 是有序的,而另一些則是無序是有序的,而另一些則是無序的。的。Collection

3、接口成員方法1、添加功能:、添加功能: boolean add(E e) boolean addAll(Collection c)2、刪除功能、刪除功能 boolean remove(Object o) boolean removeAll(Collection c) void clear()3、判斷功能、判斷功能 boolean contains(Object o) boolean containsAll(Collection c) boolean isEmpty()Collection接口成員方法4、獲取功能、獲取功能 Iterator iterator()(重點重點)5、長度功能、長度功能

4、 int size():元素的個數(shù)元素的個數(shù)6、交集功能、交集功能 boolean retainAll(Collection c)7、把集合轉換為數(shù)組、把集合轉換為數(shù)組 Object toArray()Iterator接口概述 Iterator iterator()迭代器,集合的專用遍歷方式迭代器,集合的專用遍歷方式 Iterator接口概述接口概述對對 collection 進行迭代的迭代器進行迭代的迭代器依賴于集合而存在依賴于集合而存在Iterator接口成員方法 boolean hasNext() E next()Iterator接口使用和原理講解 Iterator接口的使用講解接口的使

5、用講解 Iterator接口的原理講解接口的原理講解為什么不定義成一個類,而是一個接口為什么不定義成一個類,而是一個接口看源碼是如何實現(xiàn)的看源碼是如何實現(xiàn)的Collection案例案例 存儲字符串并遍歷存儲字符串并遍歷 存儲自定義對象并遍歷存儲自定義對象并遍歷Student(name,age)List接口概述接口概述 List接口概述接口概述有序的有序的 collection(也稱為序列)。此接口的用戶(也稱為序列)。此接口的用戶可以對列表中每個元素的插入位置進行精確地控制可以對列表中每個元素的插入位置進行精確地控制。用戶可以根據(jù)元素的整數(shù)索引(在列表中的位置。用戶可以根據(jù)元素的整數(shù)索引(在列

6、表中的位置)訪問元素,并搜索列表中的元素。)訪問元素,并搜索列表中的元素。與與 set 不同,列表通常允許重復的元素。不同,列表通常允許重復的元素。 List案例案例存儲字符串并遍歷存儲字符串并遍歷存儲自定義對象并遍歷存儲自定義對象并遍歷List接口成員方法接口成員方法 void add(int index,E element) E remove(int index) E get(int index) E set(int index,E element) ListIterator listIterator()ListIterator接口的成員方法 boolean hasPrevious() E

7、 previous() ConcurrentModificationException現(xiàn)象現(xiàn)象原因原因解決方案解決方案ArrayList類概述及使用類概述及使用 ArrayList類概述類概述底層數(shù)據(jù)結構是數(shù)組,查詢快,增刪慢底層數(shù)據(jù)結構是數(shù)組,查詢快,增刪慢線程不安全,效率高線程不安全,效率高 ArrayList案例案例存儲字符串并遍歷存儲字符串并遍歷存儲自定義對象并遍歷存儲自定義對象并遍歷Vector類概述及使用類概述及使用 Vector類概述類概述底層數(shù)據(jù)結構是數(shù)組,查詢快,增刪慢底層數(shù)據(jù)結構是數(shù)組,查詢快,增刪慢線程安全,效率低線程安全,效率低 Vector類特有功能類特有功能publ

8、ic void addElement(E obj)public E elementAt(int index)public Enumeration elements() Vector案例案例存儲字符串并遍歷存儲字符串并遍歷存儲自定義對象并遍歷存儲自定義對象并遍歷LinkedList類概述及使用類概述及使用 LinkedList類概述類概述底層數(shù)據(jù)結構是鏈表,查詢慢,增刪快底層數(shù)據(jù)結構是鏈表,查詢慢,增刪快線程不安全,效率高線程不安全,效率高 LinkedList類特有功能類特有功能public void addFirst(E e)及及addLast(E e)public E getFirst()

9、及及getLast()public E removeFirst()及及public E removeLast() LinkedList案例案例存儲字符串并遍歷存儲字符串并遍歷存儲自定義對象并遍歷存儲自定義對象并遍歷List集合練習集合練習 ArrayList去除集合中字符串的重復值去除集合中字符串的重復值(字符串的內容相同字符串的內容相同)去除集合中自定義對象的重復值去除集合中自定義對象的重復值(對象的成員變量值對象的成員變量值都相同都相同) LinkedList請用請用LinkedList模擬棧數(shù)據(jù)結構的集合,并測試模擬棧數(shù)據(jù)結構的集合,并測試泛型概述及使用泛型概述及使用 JDK1.5以后出

10、現(xiàn)的機制以后出現(xiàn)的機制 泛型出現(xiàn)的原因泛型出現(xiàn)的原因 泛型出現(xiàn)的好處泛型出現(xiàn)的好處 泛型的書寫格式泛型的書寫格式 把前面的集合代碼用泛型改進把前面的集合代碼用泛型改進泛型由來泛型由來 為什么會有泛型呢為什么會有泛型呢?通過案例引入通過案例引入早期的早期的Object類型可以接收任意的對象類型,但是類型可以接收任意的對象類型,但是在實際的使用中,會有類型轉換的問題。也就存在在實際的使用中,會有類型轉換的問題。也就存在這隱患,所以這隱患,所以Java提供了泛型來解決這個安全問題。提供了泛型來解決這個安全問題。泛型應用泛型應用 泛型類泛型類把泛型定義在類上把泛型定義在類上格式格式:public cl

11、ass 類名類名注意注意:泛型類型必須是引用類型泛型類型必須是引用類型 泛型方法泛型方法把泛型定義在方法上把泛型定義在方法上格式格式:public 返回類型返回類型 方法名方法名(泛型類型泛型類型 .) 泛型接口泛型接口把泛型定義在接口上把泛型定義在接口上格式格式:public interface 接口名接口名泛型高級泛型高級(通配符通配符) 泛型通配符泛型通配符任意類型,如果沒有明確,那么就是任意類型,如果沒有明確,那么就是Object以及任意的以及任意的Java類了類了 ? extends E向下限定,向下限定,E及其子類及其子類 ? super E向上限定,向上限定,E及其父類及其父類增

12、強增強for概述及使用概述及使用 增強增強for概述概述簡化數(shù)組和簡化數(shù)組和Collection集合的遍歷集合的遍歷 格式:格式:for(元素數(shù)據(jù)類型元素數(shù)據(jù)類型 變量變量 : 數(shù)組或者數(shù)組或者Collection集合集合) 使用變量即可,該變量就是元素 好處:簡化遍歷好處:簡化遍歷 注意事項:增強注意事項:增強for的目標要判斷是否為的目標要判斷是否為null 把前面的集合代碼的遍歷用增強把前面的集合代碼的遍歷用增強for改進改進可變參數(shù)概述及使用可變參數(shù)概述及使用 可變參數(shù)概述可變參數(shù)概述定義方法的時候不知道該定義多少個參數(shù)定義方法的時候不知道該定義多少個參數(shù) 格式格式修飾符修飾符 返回值

13、類型返回值類型 方法名方法名(數(shù)據(jù)類型數(shù)據(jù)類型 變量名變量名)注意:注意: 這里的變量其實是一個數(shù)組 如果一個方法有可變參數(shù),并且有多個參數(shù),那么,可變參數(shù)肯定是最后一個 Arrays工具類中的一個方法工具類中的一個方法public static List asList(T. a)List集合練習集合練習2 集合的嵌套遍歷集合的嵌套遍歷 獲取獲取10個個1-20之間的隨機數(shù),要求不能重復之間的隨機數(shù),要求不能重復 鍵盤錄入多個數(shù)據(jù),以鍵盤錄入多個數(shù)據(jù),以0結束,要求在控制臺輸結束,要求在控制臺輸出這多個數(shù)據(jù)中的最大值出這多個數(shù)據(jù)中的最大值Set接口概述接口概述 Set接口概述接口概述一個不包含

14、重復元素的一個不包含重復元素的 collection。 Set案例案例存儲字符串并遍歷存儲字符串并遍歷存儲自定義對象并遍歷存儲自定義對象并遍歷HashSet類概述類概述 HashSet類概述類概述不保證不保證 set 的迭代順序的迭代順序特別是它不保證該順序恒久不變。特別是它不保證該順序恒久不變。 HashSet如何保證元素唯一性如何保證元素唯一性底層數(shù)據(jù)結構是哈希表底層數(shù)據(jù)結構是哈希表(元素是鏈表的數(shù)組元素是鏈表的數(shù)組)哈希表依賴于哈希值存儲哈希表依賴于哈希值存儲添加功能底層依賴兩個方法:添加功能底層依賴兩個方法: int hashCode() boolean equals(Object o

15、bj)LinkedHashSet類概述類概述 LinkedHashSet類概述類概述元素有序唯一元素有序唯一由鏈表保證元素有序由鏈表保證元素有序由哈希表保證元素唯一由哈希表保證元素唯一TreeSet類概述類概述 TreeSet類概述類概述使用元素的自然順序對元素進行排序使用元素的自然順序對元素進行排序或者根據(jù)創(chuàng)建或者根據(jù)創(chuàng)建 set 時提供的時提供的 Comparator 進行排序進行排序具體取決于使用的構造方法。具體取決于使用的構造方法。 TreeSet是如何保證元素的排序和唯一性的是如何保證元素的排序和唯一性的底層數(shù)據(jù)結構是紅黑樹底層數(shù)據(jù)結構是紅黑樹(紅黑樹是一種自平衡的二叉紅黑樹是一種自

16、平衡的二叉樹樹)Set集合練習集合練習 HashSet集合存儲自定義對象并遍歷。集合存儲自定義對象并遍歷。如果對象的成員變量值相同即為同一個對象如果對象的成員變量值相同即為同一個對象 TreeSet集合存儲自定義對象并遍歷集合存儲自定義對象并遍歷如果對象的成員變量值相同即為同一個對象如果對象的成員變量值相同即為同一個對象按照年齡進行從大到小進行排序按照年齡進行從大到小進行排序 編寫一個程序,獲取編寫一個程序,獲取10個個1至至20的隨機數(shù),要求的隨機數(shù),要求隨機數(shù)不能重復。隨機數(shù)不能重復。 鍵盤錄入鍵盤錄入5個學生信息個學生信息(姓名姓名,語文成績語文成績,數(shù)學成績數(shù)學成績,英語成績英語成績)

17、,按照總分從高到低輸出到控制臺按照總分從高到低輸出到控制臺Collection集合總結集合總結 CollectionList ArrayList Vector LinkedListSet HashSet TreeSetMap接口概述接口概述 Map接口概述接口概述將鍵映射到值的對象將鍵映射到值的對象一個映射不能包含重復的鍵一個映射不能包含重復的鍵每個鍵最多只能映射到一個值每個鍵最多只能映射到一個值 Map接口和接口和Collection接口的不同接口的不同Map是雙列的是雙列的,Collection是單列的是單列的Map的鍵唯一的鍵唯一,Collection的子體系的子體系Set是唯一的是唯一

18、的Map集合的數(shù)據(jù)結構值針對鍵有效,跟值無關集合的數(shù)據(jù)結構值針對鍵有效,跟值無關 Collection集合的數(shù)據(jù)結構是針對元素有效集合的數(shù)據(jù)結構是針對元素有效Map接口成員方法接口成員方法 V put(K key,V value) V remove(Object key) void clear() boolean containsKey(Object key) boolean containsValue(Object value) boolean isEmpty() int size()Map接口成員方法接口成員方法 V get(Object key) Set keySet() Collect

19、ion values() SetMap.Entry entrySet()Map集合遍歷集合遍歷 方式方式1:根據(jù)鍵找值:根據(jù)鍵找值獲取所有鍵的集合獲取所有鍵的集合遍歷鍵的集合,獲取到每一個鍵遍歷鍵的集合,獲取到每一個鍵根據(jù)鍵找值根據(jù)鍵找值 方式方式2:根據(jù)鍵值對對象找鍵和值:根據(jù)鍵值對對象找鍵和值獲取所有鍵值對對象的集合獲取所有鍵值對對象的集合遍歷鍵值對對象的集合,獲取到每一個鍵值對對象遍歷鍵值對對象的集合,獲取到每一個鍵值對對象根據(jù)鍵值對對象找鍵和值根據(jù)鍵值對對象找鍵和值HashMap類概述類概述 HashMap類概述類概述鍵是哈希表結構,可以保證鍵的唯一性鍵是哈希表結構,可以保證鍵的唯一性

20、 HashMap案例案例HashMapHashMapHashMapHashMapLinkedHashMap類概述類概述 Map 接口的哈希表和鏈接列表實現(xiàn),具有可預接口的哈希表和鏈接列表實現(xiàn),具有可預知的迭代順序。知的迭代順序。TreeMap類概述類概述 TreeMap類概述類概述鍵是紅黑樹結構,可以保證鍵的排序和唯一性鍵是紅黑樹結構,可以保證鍵的排序和唯一性 TreeMap案例案例HashMapHashMapMap集合案例集合案例 aababcabcdabcde,獲取字符串中每一個字獲取字符串中每一個字母出現(xiàn)的次數(shù)要求結果母出現(xiàn)的次數(shù)要求結果:a(5)b(4)c(3)d(2)e(1) 集合的嵌套遍歷集合的嵌套遍歷HashMap嵌套嵌套HashMapHashMap嵌套嵌套ArrayListArrayList嵌套嵌套HashMap面試題面試題 HashMap和和Hashtable的區(qū)別的區(qū)別 List,Set,Map等接口是否都繼承子等接口是否都繼承子Map接口接口Collections類和成員方法類和成員方法 Collections類概述類概述針對集合操作針對集合操作 的工具類的工具類 Collections成員方法成員方法pub

溫馨提示

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

評論

0/150

提交評論