工具類與算法_第1頁
工具類與算法_第2頁
工具類與算法_第3頁
工具類與算法_第4頁
工具類與算法_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

工具類與算法第一頁,共三十九頁,2022年,8月28日Q1:Integer的大小比較Whenboxing(transforming

int

to

Integer)thecompilerusesacacheforsmallvalues(-128-127)andreusesthesameobjectsforthesamevalues.第二頁,共三十九頁,2022年,8月28日Q2:Scanner的使用第三頁,共三十九頁,2022年,8月28日Q3:面試題第四頁,共三十九頁,2022年,8月28日第五頁,共三十九頁,2022年,8月28日總結(jié)Java編程語言只有值傳遞參數(shù)。不管是原始類型還是引用類型,傳遞的都是副本。如果參數(shù)類型是原始類型,那么傳過來的就是這個參數(shù)的一個副本,也就是這個原始參數(shù)的值。如果在函數(shù)中改變了副本的值,但不會改變原始的值。如果參數(shù)類型是引用類型,那么傳過來的就是這個引用參數(shù)的副本,這個副本存放的是參數(shù)的地址。如果在函數(shù)中沒有改變這個副本的地址,而是改變了地址中的值,那么在函數(shù)內(nèi)的改變會影響到傳入的參數(shù)。如果在函數(shù)中改變了副本的地址,如new一個,那么副本就指向了一個新的地址,此時傳入的參數(shù)還是指向原來的地址,所以不會改變參數(shù)的值。第六頁,共三十九頁,2022年,8月28日集合-向量問題引入:若要處理一組相同類型的已知數(shù)量的數(shù)據(jù),則可以使用哪種結(jié)構(gòu)?如:處理10個整型數(shù)據(jù)或一個班級30名同學(xué)數(shù)據(jù)等。若要處理一組不同類型的數(shù)據(jù),數(shù)量未知,該用哪種結(jié)構(gòu)描述?如:要存儲2個整型、幾個字符串、若干個Student數(shù)據(jù)實際應(yīng)用:到超市買東西,購買不同商品,如何實現(xiàn)?第七頁,共三十九頁,2022年,8月28日集合與集合框架集合一個將多個元素組合進一個單元或容器的對象提供用于存儲、獲取和操作數(shù)據(jù)的方法“集合框架”(CollectionsFramework)提供一組接口和類,為數(shù)據(jù)結(jié)構(gòu)中的各種類型提供一個方便操作的接口和類的API提供方便操作各種數(shù)據(jù)結(jié)構(gòu)的方法集合框架主要包括集合容器—用于存儲數(shù)據(jù)迭代器—用于獲取數(shù)據(jù)算法—用于操作數(shù)據(jù)集合:元素數(shù)據(jù)類型可以不同數(shù)組:元素數(shù)據(jù)類型相同第八頁,共三十九頁,2022年,8月28日集合與集合框架集合框架優(yōu)點高性能減少編程工作量精力集中于程序的重要部分通用性集合框架API,不同類型的集合以相似的方式進行操作可拓展性容易擴展和改變一個集合提供了將標(biāo)準數(shù)據(jù)集成到集合框架中的機制第九頁,共三十九頁,2022年,8月28日集合框架圖MapCollectionSetIteratorListComparableHashSetHashMapArrayListLinkedList第十頁,共三十九頁,2022年,8月28日集合分類在不同的組織方式中,主要有三種類型的集合,稱作集(set)、序列(list)、映射(map)集:對象聚集,可以向集中增加對象,但不能有重復(fù)的對象序列:有序的對象聚集,對象按照一定的順序存放,允許重復(fù)映射:映射的每一項都含有一對對象,每個對象都有一個與之相關(guān)聯(lián)的鍵對象,鍵決定了對象在映射中的存儲位置。映射中的鍵必須各不相同。第十一頁,共三十九頁,2022年,8月28日各類集合容器圖示1243756141212K3->v2K1->v1K2->v1K4->v3集列表映射第十二頁,共三十九頁,2022年,8月28日Collection接口

表示一組對象,有些允許重復(fù),有些不允許,有些有序,有些無序Set接口繼承Collection不允許重復(fù)List接口繼承Collection允許重復(fù),以元素安插的次序來放置元素,不會重新排列三、集合框架中的主要接口CollectionSetListMapMap接口存放鍵-值對象不能有重復(fù)的key13第十三頁,共三十九頁,2022年,8月28日Collection接口Collection最基本的集合接口聲明所有集合都將擁有的核心方法主要子接口Set–不包含重復(fù)元素List–按照添加順序存儲,可以包含重復(fù)元素14第十四頁,共三十九頁,2022年,8月28日Collection主要操作重要方法單元素添加、刪除操作:booleanadd(Objecto):將對象添加給集合booleanremove(Objecto):如果集合中有與o對象,則刪除組操作:作用于元素組或整個集合booleancontainsAll(Collectionc):查找集合中是否含有集合c中所有元素booleanaddAll(Collectionc):將集合c中所有元素添加給該集合voidclear():刪除集合中所有元素voidremoveAll(Collectionc):從集合中刪除集合c中的所有元素voidretainAll(Collectionc):從集合中刪除集合c中不包含的元素15第十五頁,共三十九頁,2022年,8月28日Collection主要操作重要方法查詢操作:intsize():返回當(dāng)前集合中元素的數(shù)量booleanisEmpty():判斷集合中是否有任何元素booleancontains(Objecto):查找集合中是否含有對象oIteratoriterator():返回一個迭代器,用來遍歷集合中各元素Collection轉(zhuǎn)換為Object數(shù)組:Object[]toArray():返回一個內(nèi)含集合所有元素的arrayObject[]toArray(Object[]a):返回一個內(nèi)含集合所有元素的array。返回的array和參數(shù)a的類型相同。16第十六頁,共三十九頁,2022年,8月28日Set接口及實現(xiàn)類Set接口特點:不允許包含相同的元素至多有一個null元素常用方法同Collection接口實現(xiàn)Set的類:HashSet無序–順序可以改變快速-散列法使訪問速度很快TreeSet有序–順序是不變的,要么是升序要么是用戶自定義順序,因此使用的時候元素必須具有可比較性。17第十七頁,共三十九頁,2022年,8月28日HashSet類HashSet類主要實現(xiàn)Set接口元素?zé)o序,不能重復(fù),類型無限制第十八頁,共三十九頁,2022年,8月28日課堂實踐1創(chuàng)建一個容器對象,向容器中添加各種對象,并輸出。參考示例:importjava.util.*;

classHashSetDemo{

publicstaticvoidmain(Stringargs[]){

//1.創(chuàng)建一個容器,類型為HashSet

HashSeths=newHashSet();

//2.向容器中添加元素

hs.add("B");

hs.add("A");

hs.add("D");

hs.add(123);hs.add(0.23); hs.add(newCircle(3));

//3.輸出容器的元素 System.out.println(hs);}}第十九頁,共三十九頁,2022年,8月28日TreeSet類TreeSet主要實現(xiàn)Set接口和SortedSet接口,元素有序(自然順序或提供的排序方式),不能重復(fù),必須具有可比性示例:TreeSetts=newTreeSet();ts.add("zhangshan");ts.add(“l(fā)ishi");ts.add(“wangwu");ts.add(“maliu");20第二十頁,共三十九頁,2022年,8月28日Set使用注意點如何保證加入的元素不重復(fù)?加入元素add(Objectobj)方法若容器中沒有obj對象,則添加,返回true如果obj已經(jīng)存在集合中,將返回false21第二十一頁,共三十九頁,2022年,8月28日遍歷元素—Iterator接口Iterator接口遍歷集合中元素每個Collection

都有iterator()方法,此方法返回Iterator對象重要方法Objectnext()//返回要訪問的下一個對象booleanhasNext()//是否存在另一個需訪問的元素,是返回truevoidremove()//刪除上次調(diào)用next時返回的對象22第二十二頁,共三十九頁,2022年,8月28日課堂實踐3Iterator接口操作,對前面的HashSet和TreeSet兩個容器中的元素進行迭代顯示。參考示例:查看集合中的所有元素,可使用如下方法:

//獲取迭代對象Iteratorit=c.iterator();while(it.hasNext())//判斷是否還有元素{Objectobj=it.next();//元素獲取……}23第二十三頁,共三十九頁,2022年,8月28日小結(jié)Collection接口是根接口,主要的子接口為Set和List。對象一旦放入容器,則全部分看作為Object對象,若要指定某一類型,則須使用范型。Set主要兩個實現(xiàn)類HashSet和TreeSetHashSet無序,無重復(fù),類型無限制TreeSet有序,無重復(fù),對象間具有可比性24第二十四頁,共三十九頁,2022年,8月28日List接口Collection接口的子接口,繼承了其方法其元素以線性方式存儲。特點:元素可重復(fù)元素有序可以對元素的位置精確控制實現(xiàn)類ArrayListLinkedListVectorStack第二十五頁,共三十九頁,2022年,8月28日List接口常用方法添加元素booleanadd(Ee)向列表的尾部添加指定的元素voidadd(intindex,Eelement)

在列表的指定位置插入指定元素booleanaddAll(Collectionc)添加指定collection中的所有元素到此列表的結(jié)尾

booleanaddAll(intindex,Collectionc)將指定collection中的所有元素都插入到列表中的指定位置第二十六頁,共三十九頁,2022年,8月28日List接口常用方法設(shè)置元素Eset(intindex,Eelement)

用指定元素替換列表中指定位置的元素。獲取元素Eget(intindex)

返回列表中指定位置的元素。intindexOf(Objecto)

返回此列表中第一次出現(xiàn)的指定元素的索引,否則返回-1

intlastIndexOf(Objecto)

返回此列表中最后出現(xiàn)的指定元素的索引,否則返回-1。List<E>subList(intfromIndex,inttoIndex)返回列表中指定的fromIndex(包括)和toIndex(不包括)之間的部分視圖。第二十七頁,共三十九頁,2022年,8月28日List接口常用方法移除元素Eremove(intindex)

移除列表中指定位置的元素

booleanremove(Objecto)

從此列表中移除第一次出現(xiàn)的指定元素(如果存在)

booleanremoveAll(Collectionc)從列表中移除指定collection中包含的其所有元素voidclear()從列表中移除所有元素第二十八頁,共三十九頁,2022年,8月28日List接口常用方法相關(guān)判斷方法booleancontains(Objecto)

如果列表包含指定的元素,則返回true

booleancontainsAll(Collectionc)如果列表包含指定collection的所有元素,則返回true

booleanequals(Objecto)比較指定的對象與列表是否相等booleanisEmpty()如果列表不包含元素,則返回true第二十九頁,共三十九頁,2022年,8月28日ArrayList介紹

ArrayList就是傳說中的動態(tài)數(shù)組,內(nèi)部封裝了一個Object類型的數(shù)組特點:動態(tài)的增加和減少元素靈活的設(shè)置數(shù)組的大小與數(shù)組相比,性能稍差第三十頁,共三十九頁,2022年,8月28日ArrayList常用方法新增方法VoidensureCapacity(int

minCapacity)

如有必要,增加此ArrayList實例的容量,以確保它至少能夠容納最小容量參數(shù)所指定的元素數(shù)。voidtrimToSize()將此ArrayList實例的容量調(diào)整為列表的當(dāng)前大小。voidremoveRange(int

fromIndex,int

toIndex)移除列表中索引在fromIndex(包括)和toIndex(不包括)之間的所有元素。第三十一頁,共三十九頁,2022年,8月28日三、LinkedList介紹實現(xiàn)List接口,基于雙向循環(huán)鏈表結(jié)構(gòu)第三十二頁,共三十九頁,2022年,8月28日LinkedList常用方法添加元素voidaddFirst(E

e)

將指定元素插入此列表的開頭voidaddLast(E

e)將指定元素添加到此列表的結(jié)尾獲取元素element()獲取但不移除此列表的頭(第一個元素)

Eget(int

index)返回此列表中指定位置處的元素

EgetFirst()

返回此列表的第一個元素EgetLast()

返回此列表的最后一個元素第三十三頁,共三十九頁,2022年,8月28日LinkedList常用方法移除元素Eremove()獲取并移除此列表的頭(第一個元素)Eremove(int

index)移除此列表中指定位置處的元素

booleanremove(Object

o)

從此列表中移除首次出現(xiàn)的指定元素(如果存在)EremoveFirst()移除并返回此列表的第一個元素removeLast()

移除并返回此列表的最后一個元素。第三十四頁,共三十九頁,2022年,8月28日ArrayList和LinkedList比較ArrayList基于數(shù)組,LinkedList基于鏈表隨機訪問元素,ArrayList優(yōu)于LinkedList增加和刪除元素,LinkedList優(yōu)于ArrayList可用LinkedList實現(xiàn)棧、隊列結(jié)構(gòu)結(jié)論:若是隨機獲取元素值,則用ArrayList若是頻繁添加和刪除元素,則用LinkedList第三十五頁,共三十九頁,2022年,8月28日向量類VectorVector類以實現(xiàn)類似動態(tài)數(shù)組的功能使用了synchronized方法(線程安全)所以性能上比ArrayList要差向量類提供了三種構(gòu)造方法:publicvector()publicvector(intinitialcapacity,intcapacityIncrement)publicvector(intinitialcapacity)第三十六頁,共三十九頁,2022年,8月28日Stack類Stack繼承自Vector,實現(xiàn)一個后進先出的堆棧。Stack提供5個額外的方法使得Vector得以被當(dāng)作

溫馨提示

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

評論

0/150

提交評論