




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、工具類與算法(中)工具類與算法(中) 蔣和松Email:Tel九講:課本第第九講:課本第6章章Q1:Integer的大小比較的大小比較nWhen boxing (transforming int to Integer) the compiler uses a cache for small values (-128 - 127) and reuses the same objects for the same values.Q2:Scanner的使用的使用Q3:面試題:面試題總結(jié)總結(jié)nJava 編程語(yǔ)言只有值傳遞參數(shù)。不管是原始類型編程語(yǔ)言只有值傳遞參數(shù)。不管是原始類
2、型還是引用類型,傳遞的都是副本。還是引用類型,傳遞的都是副本。n如果參數(shù)類型是原始類型,那么傳過來(lái)的就是這個(gè)如果參數(shù)類型是原始類型,那么傳過來(lái)的就是這個(gè)參數(shù)的一個(gè)副本,也就是這個(gè)原始參數(shù)的值。如果參數(shù)的一個(gè)副本,也就是這個(gè)原始參數(shù)的值。如果在函數(shù)中改變了副本的值,但不會(huì)改變?cè)嫉闹?。在函?shù)中改變了副本的值,但不會(huì)改變?cè)嫉闹?。n如果參數(shù)類型是引用類型,那么傳過來(lái)的就是這個(gè)如果參數(shù)類型是引用類型,那么傳過來(lái)的就是這個(gè)引用參數(shù)的副本,這個(gè)副本存放的是參數(shù)的地址。引用參數(shù)的副本,這個(gè)副本存放的是參數(shù)的地址。如果在函數(shù)中沒有改變這個(gè)副本的地址,而是改變?nèi)绻诤瘮?shù)中沒有改變這個(gè)副本的地址,而是改變了地址
3、中的了地址中的 值,那么在函數(shù)內(nèi)的改變會(huì)影響到傳入值,那么在函數(shù)內(nèi)的改變會(huì)影響到傳入的參數(shù)。如果在函數(shù)中改變了副本的地址,如的參數(shù)。如果在函數(shù)中改變了副本的地址,如new一個(gè),那么副本就指向了一個(gè)新的地址,此時(shí)傳入一個(gè),那么副本就指向了一個(gè)新的地址,此時(shí)傳入的參數(shù)還是指向原來(lái)的的參數(shù)還是指向原來(lái)的 地址,所以不會(huì)改變參數(shù)的地址,所以不會(huì)改變參數(shù)的值。值。集合集合-向量向量n問題引入問題引入 :v若要處理一組若要處理一組相同類型相同類型的已知數(shù)量的數(shù)據(jù),則可以使用的已知數(shù)量的數(shù)據(jù),則可以使用哪種結(jié)構(gòu)?哪種結(jié)構(gòu)?如:處理如:處理10個(gè)整型數(shù)據(jù)或一個(gè)班級(jí)個(gè)整型數(shù)據(jù)或一個(gè)班級(jí)30名同學(xué)數(shù)據(jù)等。名同學(xué)數(shù)
4、據(jù)等。v若要處理一組若要處理一組不同類型不同類型的數(shù)據(jù),數(shù)量未知,該用哪種結(jié)的數(shù)據(jù),數(shù)量未知,該用哪種結(jié)構(gòu)描述?構(gòu)描述?如:要存儲(chǔ)如:要存儲(chǔ)2個(gè)個(gè)整型、整型、幾個(gè)幾個(gè)字符串、字符串、若干個(gè)若干個(gè)Student數(shù)據(jù)數(shù)據(jù)n實(shí)際應(yīng)用:實(shí)際應(yīng)用:v到超市買東西,購(gòu)買不同商品,如何實(shí)現(xiàn)?到超市買東西,購(gòu)買不同商品,如何實(shí)現(xiàn)?集合與集合框架集合與集合框架n集合v一個(gè)將一個(gè)將多個(gè)元素多個(gè)元素組合進(jìn)一個(gè)單元或容器的對(duì)象組合進(jìn)一個(gè)單元或容器的對(duì)象v提供用于存儲(chǔ)、獲取和操作數(shù)據(jù)的方法提供用于存儲(chǔ)、獲取和操作數(shù)據(jù)的方法n“集合框架”(Collections Framework)v提供一組接口和類,為數(shù)據(jù)結(jié)構(gòu)中的各種
5、類型提供一個(gè)提供一組接口和類,為數(shù)據(jù)結(jié)構(gòu)中的各種類型提供一個(gè)方便操作的接口和類的方便操作的接口和類的APIv提供方便提供方便操作操作各種數(shù)據(jù)結(jié)構(gòu)各種數(shù)據(jù)結(jié)構(gòu)的方法的方法n集合框架主要包括v集合容器集合容器用于用于存儲(chǔ)存儲(chǔ)數(shù)據(jù)數(shù)據(jù)v迭代器迭代器用于用于獲取獲取數(shù)據(jù)數(shù)據(jù)v算法算法用于用于操作操作數(shù)據(jù)數(shù)據(jù)集合:元素?cái)?shù)據(jù)類型可以不同集合:元素?cái)?shù)據(jù)類型可以不同數(shù)組:元素?cái)?shù)據(jù)類型相同數(shù)組:元素?cái)?shù)據(jù)類型相同集合與集合框架集合與集合框架n集合框架優(yōu)點(diǎn)集合框架優(yōu)點(diǎn)v高性能高性能v減少編程工作量減少編程工作量 精力集中于程序的重要部分精力集中于程序的重要部分v通用性通用性集合框架集合框架API,不同類型的集合以相
6、似的方式進(jìn)行操作,不同類型的集合以相似的方式進(jìn)行操作v可拓展性可拓展性容易擴(kuò)展和改變一個(gè)集合容易擴(kuò)展和改變一個(gè)集合提供了將標(biāo)準(zhǔn)數(shù)據(jù)集成到集合框架中的機(jī)制提供了將標(biāo)準(zhǔn)數(shù)據(jù)集成到集合框架中的機(jī)制集合框架圖集合框架圖MapCollectionSetIteratorListComparableHashSetHashMapArrayListLinkedList集合分類集合分類n在不同的組織方式中,主要有三種類型的集合,稱作集(set)、序列(list)、映射(map)v集:對(duì)象聚集,可以向集中增加對(duì)象,但集:對(duì)象聚集,可以向集中增加對(duì)象,但不能有重復(fù)不能有重復(fù)的的對(duì)象對(duì)象v序列:序列:有序有序的對(duì)象聚集
7、,對(duì)象按照一定的順序存放,的對(duì)象聚集,對(duì)象按照一定的順序存放,允允許重復(fù)許重復(fù)v映射:映射的每一項(xiàng)都含有映射:映射的每一項(xiàng)都含有一對(duì)對(duì)象一對(duì)對(duì)象,每個(gè)對(duì)象都有一,每個(gè)對(duì)象都有一個(gè)與之相關(guān)聯(lián)的鍵對(duì)象,鍵決定了對(duì)象在映射中的存儲(chǔ)個(gè)與之相關(guān)聯(lián)的鍵對(duì)象,鍵決定了對(duì)象在映射中的存儲(chǔ)位置。映射中的位置。映射中的鍵必須各不相同鍵必須各不相同。各類集合容器圖示各類集合容器圖示1243756141212K3-v2K1-v1K2-v1K4-v3集列表 映射 Collection 接口 表示一組對(duì)象,有些允許重復(fù),有些不允許 ,有些有序,有些無(wú)序 Set 接口 繼承 Collection 不允許重復(fù) List 接口
8、 繼承 Collection 允許重復(fù),以元素安插的次序來(lái)放置元素,不會(huì)重新排列三、集合框架中的三、集合框架中的主要接口主要接口13 Map接口存放鍵值對(duì)象不能有重復(fù)的keyCollection接口vCollection 最基本的集合接口 聲明所有集合都將擁有的核心方法 主要子接口 Set 不包含重復(fù)元素 List 按照添加順序存儲(chǔ),可以包含重復(fù)元素14Collection主要操作v重要方法重要方法 單元素添加、刪除操作: boolean add(Object o):將對(duì)象添加給集合 boolean remove(Object o): 如果集合中有與o對(duì)象,則刪除 組操作 :作用于元素組或整個(gè)
9、集合 boolean containsAll(Collection c): 查找集合中是否含有集合c 中所有元素 boolean addAll(Collection c) : 將集合c 中所有元素添加給該集合 void clear(): 刪除集合中所有元素 void removeAll(Collection c) : 從集合中刪除集合c 中的所有元素 void retainAll(Collection c) : 從集合中刪除集合c 中不包含的元素15Collection主要操作v重要方法重要方法 查詢操作: int size() :返回當(dāng)前集合中元素的數(shù)量 boolean isEmpty()
10、:判斷集合中是否有任何元素 boolean contains(Object o) :查找集合中是否含有對(duì)象o Iterator iterator() :返回一個(gè)迭代器,用來(lái)遍歷集合中各元素 Collection轉(zhuǎn)換為Object數(shù)組 : Object toArray() :返回一個(gè)內(nèi)含集合所有元素的array Object toArray(Object a) :返回一個(gè)內(nèi)含集合所有元素的array。返回的array和參數(shù)a的類型相同。16Set接口及實(shí)現(xiàn)類接口及實(shí)現(xiàn)類vSet接口特點(diǎn):接口特點(diǎn): 不允許包含相同的元素 至多有一個(gè)null元素 常用方法同Collection接口v 實(shí)現(xiàn)實(shí)現(xiàn)Set
11、的類的類: HashSet無(wú)序 順序可以改變快速 - 散列法使訪問速度很快 TreeSet有序 順序是不變的,要么是升序要么是用戶自定義順序,因此使用的時(shí)候元素必須具有可比較性。17HashSet類vHashSet類類 主要實(shí)現(xiàn)Set接口 元素?zé)o序,不能重復(fù),類型無(wú)限制課堂實(shí)踐課堂實(shí)踐1v 創(chuàng)建一個(gè)容器對(duì)象,向容器中添加各種對(duì)象,并輸出創(chuàng)建一個(gè)容器對(duì)象,向容器中添加各種對(duì)象,并輸出 。v 參考示例:參考示例: import java.util.*; class HashSetDemo public static void main(String args) / 1.創(chuàng)建一個(gè)容器創(chuàng)建一個(gè)容器,類
12、型為,類型為HashSet HashSet hs = new HashSet(); / 2.向容器中添加元素向容器中添加元素 hs.add(B); hs.add(A); hs.add(D); hs.add(123); hs.add(0.23); hs.add(new Circle(3); /3.輸出容器的元素輸出容器的元素 System.out.println(hs); TreeSet類vTreeSet 主要實(shí)現(xiàn)Set接口和SortedSet接口, 元素有序(自然順序或提供的排序方式 ),不能重復(fù),必須具有可比性 v示例:示例: TreeSet ts=new TreeSet(); ts.add
13、(zhangshan); ts.add(“l(fā)ishi); ts.add(“wangwu); ts.add(“maliu);20Set使用注意點(diǎn)使用注意點(diǎn)v如何保證加入的元素如何保證加入的元素不重復(fù)不重復(fù)? 加入元素 add(Object obj)方法 若容器中沒有obj對(duì)象,則添加,返回true 如果obj已經(jīng)存在集合中,將返回false21遍歷元素遍歷元素Iterator接口接口vIterator接口接口 遍歷集合中元素 每個(gè) Collection 都有iterator()方法,此方法返回Iterator對(duì)象 重要方法 Object next() / 返回要訪問的下一個(gè)對(duì)象 boolean
14、hasNext() /是否存在另一個(gè)需訪問的元素,是返回true void remove () /刪除上次調(diào)用next時(shí)返回的對(duì)象22課堂實(shí)踐課堂實(shí)踐3v Iterator接口操作,對(duì)前面的接口操作,對(duì)前面的HashSet和和TreeSet兩兩個(gè)容器中的元素進(jìn)行迭代顯示。個(gè)容器中的元素進(jìn)行迭代顯示。v 參考示例:參考示例:查看集合中的所有元素,可使用如下方法:查看集合中的所有元素,可使用如下方法: /獲取迭代對(duì)象獲取迭代對(duì)象Iterator it=c. iterator(); while(it. hasNext()/判斷是否還有元素判斷是否還有元素 Object obj=it. next();
15、 /元素獲取元素獲取 23小結(jié)小結(jié)vCollection接口是根接口,主要的子接口為接口是根接口,主要的子接口為Set和和List。v對(duì)象一旦放入容器,則全部分看作為對(duì)象一旦放入容器,則全部分看作為Object對(duì)對(duì)象,若要指定某一類型,則須使用范型。象,若要指定某一類型,則須使用范型。vSet主要兩個(gè)實(shí)現(xiàn)類主要兩個(gè)實(shí)現(xiàn)類HashSet和和TreeSet HashSet無(wú)序,無(wú)重復(fù),類型無(wú)限制 TreeSet有序,無(wú)重復(fù),對(duì)象間具有可比性24List接口vCollection接口的子接口,繼承了其方法接口的子接口,繼承了其方法v其元素以線性方式存儲(chǔ)。其元素以線性方式存儲(chǔ)。v特點(diǎn):特點(diǎn): 元素可重
16、復(fù)可重復(fù) 元素有序有序 可以對(duì)元素的位置精確控制v實(shí)現(xiàn)類實(shí)現(xiàn)類 ArrayList LinkedList Vector StackList接口常用方法v添加元素添加元素 boolean add(E e) 向列表的尾部添加指定的元素 void add(int index, E element) 在列表的指定位置插入指定元素 boolean addAll(Collection c) 添加指定 collection 中的所有元素到此列表的結(jié)尾 boolean addAll(int index, Collection c) 將指定 collection 中的所有元素都插入到列表中的指定位置List接口
17、常用方法v設(shè)置元素設(shè)置元素 E set(int index, E element) 用指定元素替換列表中指定位置的元素。 v獲取元素獲取元素 E get(int index) 返回列表中指定位置的元素。 int indexOf(Object o) 返回此列表中第一次出現(xiàn)的指定元素的索引,否則返回 -1 int lastIndexOf(Object o) 返回此列表中最后出現(xiàn)的指定元素的索引,否則返回 -1。 List subList(int fromIndex, int toIndex) 返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之間的部分視圖。 List接口常
18、用方法v移除元素移除元素 E remove(int index) 移除列表中指定位置的元素 boolean remove(Object o) 從此列表中移除第一次出現(xiàn)的指定元素(如果存在) boolean removeAll(Collection c) 從列表中移除指定 collection 中包含的其所有元素 void clear() 從列表中移除所有元素List接口常用方法v相關(guān)判斷方法相關(guān)判斷方法 boolean contains(Object o) 如果列表包含指定的元素,則返回 true boolean containsAll(Collection c) 如果列表包含指定 colle
19、ction 的所有元素,則返回 true boolean equals(Object o) 比較指定的對(duì)象與列表是否相等 boolean isEmpty() 如果列表不包含元素,則返回 trueArrayList介紹v ArrayList就是傳說(shuō)中的就是傳說(shuō)中的動(dòng)態(tài)動(dòng)態(tài)數(shù)組數(shù)組,內(nèi)部封裝了內(nèi)部封裝了一個(gè)一個(gè)Object類型的數(shù)組類型的數(shù)組v特點(diǎn)特點(diǎn): 動(dòng)態(tài)的增加和減少元素 靈活的設(shè)置數(shù)組的大小 與數(shù)組相比,性能稍差A(yù)rrayList常用方法v新增方法新增方法 Void ensureCapacity(int minCapacity) 如有必要,增加此 ArrayList 實(shí)例的容量,以確保它至少
20、能夠容納最小容量參數(shù)所指定的元素?cái)?shù)。 void trimToSize() 將此 ArrayList 實(shí)例的容量調(diào)整為列表的當(dāng)前大小。 void removeRange(int fromIndex, int toIndex) 移除列表中索引在 fromIndex(包括)和 toIndex(不包括)之間的所有元素。 三、LinkedList介紹v實(shí)現(xiàn)實(shí)現(xiàn)List接口接口,基于雙向循環(huán)鏈表結(jié)構(gòu)基于雙向循環(huán)鏈表結(jié)構(gòu)LinkedList常用方法v添加元素添加元素 voidaddFirst(E e) 將指定元素插入此列表的開頭 voidaddLast(E e) 將指定元素添加到此列表的結(jié)尾v獲取元素獲取元
21、素 element() 獲取但不移除此列表的頭(第一個(gè)元素) Eget(int index) 返回此列表中指定位置處的元素 EgetFirst() 返回此列表的第一個(gè)元素 EgetLast() 返回此列表的最后一個(gè)元素LinkedList常用方法v移除元素移除元素 E remove() 獲取并移除此列表的頭(第一個(gè)元素) E remove(int index) 移除此列表中指定位置處的元素 booleanremove(Object o) 從此列表中移除首次出現(xiàn)的指定元素(如果存在) E removeFirst() 移除并返回此列表的第一個(gè)元素 removeLast() 移除并返回此列表的最后一
22、個(gè)元素。 ArrayList和LinkedList比較vArrayList基于數(shù)組,基于數(shù)組,LinkedList基于鏈表基于鏈表v隨機(jī)訪問元素,隨機(jī)訪問元素,ArrayList優(yōu)于優(yōu)于LinkedListv增加和刪除元素,增加和刪除元素,LinkedList優(yōu)于優(yōu)于ArrayListv可用可用LinkedList實(shí)現(xiàn)棧、隊(duì)列結(jié)構(gòu)實(shí)現(xiàn)棧、隊(duì)列結(jié)構(gòu)v結(jié)論:結(jié)論: 若是隨機(jī)獲取元素值,則用ArrayList 若是頻繁添加和刪除元素,則用LinkedList向量類VectorvVector類以實(shí)現(xiàn)類似動(dòng)態(tài)數(shù)組的功能類以實(shí)現(xiàn)類似動(dòng)態(tài)數(shù)組的功能v使用了使用了synchronized方法(線程安全)所以性方法(線程安全)所以性能上比能上比ArrayList要差要差 v向量類提供了三種構(gòu)造方法:向量類提供了三種構(gòu)造方法: public vector() public vector(int initialcapacity,int capacityIncrement) public vector(int initialcapacity)Stack類vStack繼承自繼承自Vector,實(shí)現(xiàn)一個(gè)后進(jìn)先出的堆,實(shí)現(xiàn)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 房地產(chǎn)行業(yè)的投資分析
- 商品房以租代售租賃合同
- 高層建筑施工框架節(jié)點(diǎn)連接規(guī)定
- 數(shù)字化營(yíng)銷策略實(shí)施作業(yè)指導(dǎo)書
- 歷史文物鑒定保護(hù)知識(shí)題庫(kù)
- 人力資源公司員工保密協(xié)議
- 2025年秦皇島貨運(yùn)資格證模擬考試新題庫(kù)
- 國(guó)際貿(mào)易與實(shí)務(wù)操作指南
- 設(shè)備采購(gòu)與使用說(shuō)明文書示例
- 2025年塔城道路運(yùn)輸從業(yè)資格證考試題和答案
- 二副工作心得體會(huì)實(shí)習(xí)感觸
- 土壤肥料全套課件
- 旅游消費(fèi)者行為學(xué)整套課件完整版電子教案課件匯總(最新)
- 學(xué)前兒童發(fā)展心理學(xué)(第3版-張永紅)教學(xué)課件1754
- 特氣供應(yīng)系統(tǒng)的規(guī)劃與設(shè)計(jì)
- 中職《機(jī)械基礎(chǔ)》全套課件(完整版)
- 勞技-中國(guó)結(jié)PPT通用課件
- 溫庭筠《望江南》ppt課件
- 口腔正畸學(xué)單詞
- 內(nèi)襯修復(fù)用HTPO管材企標(biāo)
- 部編教材一年級(jí)下冊(cè)生字筆順筆畫
評(píng)論
0/150
提交評(píng)論