版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、成都傳智播客教育 集合框架1講師:Will .Iterable.Collection.Set.HashSet.TreeSet.List.ArrayList.LinkedList.Map.HashMap.TreeMap.Properties.Collections本章任務(wù)SetListMap成都傳智播客教育 集合類(lèi) & 容器為什么出現(xiàn)集合類(lèi)?面向?qū)ο笳Z(yǔ)言對(duì)事物的體現(xiàn)都是以對(duì)象的形式,所以為了方便對(duì)多個(gè)對(duì)象的操作,就要對(duì)對(duì)象進(jìn)行存儲(chǔ),集合就是存儲(chǔ)對(duì)象最常用的一種方式。數(shù)組和集合類(lèi)同是容器,有何不同?數(shù)組雖然也可以存儲(chǔ)對(duì)象,但長(zhǎng)度是固定的;集合長(zhǎng)度是可變的。數(shù)組中可以存儲(chǔ)任意數(shù)據(jù)類(lèi)型,集合只能存儲(chǔ)對(duì)
2、象。集合類(lèi)的特點(diǎn)集合只用于存儲(chǔ)對(duì)象,集合長(zhǎng)度是可變的,集合可以存儲(chǔ)不同類(lèi)型的對(duì)象。成都傳智播客教育 集合框架的構(gòu)成及分類(lèi)成都傳智播客教育 主要接口成都傳智播客教育 兩大接口Java集合類(lèi)主要由兩個(gè)接口派生出來(lái):CollectionSet:不能存放重復(fù)對(duì)象List:可存放重復(fù)對(duì)象,有序Queue:隊(duì)列SortedSet:可對(duì)集合數(shù)據(jù)排序MapSortedMap:可對(duì)集合數(shù)據(jù)排序成都傳智播客教育 Collection接口boolean add(Object o):該方法用于向集合里面添加一個(gè)元素,若集合對(duì)象被添加操作改變了,返回true.boolean addAll(Collection c):把
3、集合c里面的所有元素添加到指定集合里面去,如果集合對(duì)象被添加操作改變了返回true.void clear():清除集合里面的所有元素,將集合長(zhǎng)度變?yōu)?。boolean contains(Object o):返回集合里是否包含指定的元素。boolean containsAll(Collection c):返回集合里是否包含集合c內(nèi)所有的元素。boolean isEmpty():返回集合是否為空(長(zhǎng)度是否為0)。Iterator iterator():返回一個(gè)Iterator對(duì)象,用于遍歷集合里的元素。boolean remove(Object o):刪除集合中指定元素o。boolean remo
4、veAll(Collection c):從集合中刪除集合c里面的元素。若刪除一個(gè)或以上返回true。boolean retainAll(Collection c):從集合中刪除集合c里不包含的元素。int size():得到集合元素的個(gè)數(shù)。Object toArray():把集合轉(zhuǎn)成一個(gè)數(shù)組,所有集合元素變成數(shù)組元素。成都傳智播客教育 集合遍歷輸出方式Iterator:迭代輸出一旦操作集合的遍歷輸出,首選Iterator接口;ListIterator:Iterator子接口,專(zhuān)門(mén)輸出List中的元素;Enumeration:古老的輸出方式,迭代Vector元素,被Iterator取代;fore
5、ach:可輸出數(shù)組和Iterable對(duì)象;成都傳智播客教育 Iterator接口 Iterator主要遍歷Collection集合中的元素,也有稱(chēng)為迭代器或迭代精靈。boolean hasNext():若被迭代的集合元素還沒(méi)有被遍歷,返回true.Object next():返回集合的下一個(gè)元素.void remove():刪除集合上一次next()方法返回的元素。(若集合中有多個(gè)相同的元素,都可以刪掉)iterator對(duì)于集合才能用,for不同,只要是循環(huán)都可用。成都傳智播客教育 Iterator迭代是取出集合中元素的一種方式。因?yàn)镃ollection中有iterator方法,所以每一個(gè)子類(lèi)
6、集合對(duì)象都具備迭代器。迭代器在Collcection接口中是通用的,它替代了Vector類(lèi)中的Enumeration(枚舉)。迭代器的next方法是自動(dòng)向下取元素,要避免出現(xiàn)NoSuchElementException。迭代器的next方法返回值類(lèi)型是Object,所以要記得類(lèi)型轉(zhuǎn)換。Iterator iter = l.iterator();while(iter.hasNext()System.out.println(iter.next();成都傳智播客教育 Set接口Set是Collection子接口;Set和Collection基本上一樣,一點(diǎn)除外:Set無(wú)法記住添加的順序,不允許包含重復(fù)
7、的元素。當(dāng)試圖添加兩個(gè)相同元素進(jìn)Set集合,添加操作失敗,add()方法返回false。Set判斷兩個(gè)對(duì)象是否相等用equals,而不是使用=。也就是說(shuō)兩個(gè)對(duì)象equals比較返回true,Set集合是不會(huì)接受這個(gè)兩個(gè)對(duì)象的。常用子類(lèi):HashSet:散列存放TreeSet:有序存放hashCode方法對(duì)于HashSet的作用HashSet類(lèi)是Set接口最常用的實(shí)現(xiàn)類(lèi),采用hash算法存儲(chǔ)數(shù)據(jù),具有良好的存儲(chǔ)和查找功能。散列存儲(chǔ):不記錄添加順序;排列順序時(shí),順序有可能發(fā)生變化;線(xiàn)程不安全的,多個(gè)線(xiàn)程訪問(wèn)一個(gè)HashSet要使用同步代碼;HashSet集合元素值允許是null,但是最多只能有一個(gè)
8、;hash(翻譯為哈希,或散列)算法的功能:保證通過(guò)一個(gè)對(duì)象快速找到另一個(gè)對(duì)象;其算法價(jià)值體現(xiàn)在速度,可以保證查詢(xún)快速執(zhí)行;當(dāng)從HashSet中訪問(wèn)元素時(shí),HashSet先計(jì)算該元素的hashCode(也就是該對(duì)象的hashCode方法返回值),然后直接到該HashCode對(duì)應(yīng)的位置取出該元素;在這里對(duì)象的hashCode就好比是數(shù)組里的索引,但是不是索引;成都傳智播客教育 HashSet元素添加當(dāng)向HashSet集合中存入一個(gè)元素時(shí),HashSet會(huì)調(diào)用該對(duì)象的hashCode()方法來(lái)得到該對(duì)象的hashCode值,判斷已經(jīng)存儲(chǔ)在集合中的對(duì)象的hashCode值是否與添加的對(duì)象的hashC
9、ode值一致:若不一致:直接添加進(jìn)去;若一致,再進(jìn)行equals方法比較,equals方法如果返回true,表明對(duì)象已經(jīng)添加進(jìn)去了,就不會(huì)再添加新的對(duì)象了,否則添加進(jìn)去;如果我們重寫(xiě)了equals方法,也要重寫(xiě)hashCode方法,反之亦然;。HashSet集合判斷兩個(gè)元素相等的標(biāo)準(zhǔn)是兩個(gè)對(duì)象通過(guò)equals方法比較相等,并且兩個(gè)對(duì)象的hashCode方法返回值也相等。如果需要某個(gè)類(lèi)的對(duì)象保存到HashSet集合中,覆寫(xiě)該類(lèi)的equals()和hashCode()方法,應(yīng)該盡量保證兩個(gè)對(duì)象通過(guò)equals比較返回true時(shí),他們的hashCode返回也相等。成都傳智播客教育 不同類(lèi)型字段如何取
10、得hashCode字段類(lèi)型(f)計(jì)算方式boolean hashCode=(f?0:1);byte,short,char,int hashCode=(int)f;long hashCode=(int)(f(f32);float hashCode=Float.floatToIntBits(f);double long l = Double.doubleToLongBits(f); hashCode=(int)(l(l32)引用類(lèi)型 hashCode=f.hashCode();成都傳智播客教育 TreeSet使用元素的自然順序?qū)υ剡M(jìn)行排序,或者根據(jù)創(chuàng)建 set 時(shí)提供的 Comparator 進(jìn)
11、行排序;參與排序的元素必須是同一類(lèi)型的,不然會(huì)發(fā)生ClassCastException異常;TreeSet是SortedSet接口唯一的實(shí)現(xiàn),與HashSet相比額外的方法有:Comparator comparator():返回當(dāng)前Set使用的Comparator,若返回null,表示以自然順序排序。Object first() 返回此 set 中當(dāng)前第一個(gè)(最低)元素。 Object last() 返回此 set 中當(dāng)前最后一個(gè)(最高)元素。 SortedSet subSet(Object fromElement, E toElement) 返回此 set 的部子集,其元素從 fromEle
12、ment(包括)到 toElement(不包括)。 SortedSet headSet(Object toElement)返回此 set 的部分子集,其元素嚴(yán)格小于 toElement。 SortedSet tailSet(Object fromElement) 返回此 set 的部分子集,其元素大于等于 fromElement。 TreeSet的排序之自然排序TreeSet會(huì)調(diào)用元素的compareTo(Object o)方法來(lái)比較元素之間的大小關(guān)系,然后將集合里的元素按升序排列.此時(shí)需要排序元素的類(lèi)必須實(shí)現(xiàn)Compareble接口,并覆寫(xiě)其int compareTo(Object o)方法;該方法用于比較對(duì)象,若 pareTo(obj2),返回0,表示兩個(gè)對(duì)象相等,若返回一個(gè)正整數(shù),表示obj1大于obj2,若返回一個(gè)負(fù)整數(shù),表示obj1小于obj2;對(duì)于TreeSet集合而言,判斷兩個(gè)對(duì)象相等的標(biāo)準(zhǔn)是:compareTo()方法比較返回 0;TreeSet的排序之定制排序TreeSet的自然排序是根據(jù)元素的大小進(jìn)行升序排序的,若想自己定制排序,比如降序排序,就可以使用Comparator接口了:該接口包含int compare(Object o1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年快消品寄售合同樣本
- 2024年攜手研發(fā)服務(wù)協(xié)議
- 2024年安全廠房租賃責(zé)任書(shū)
- 2024年房屋建筑合同
- 2024年指定產(chǎn)品廣告代理協(xié)議
- 2024年政府車(chē)輛維修獨(dú)家協(xié)議
- 線(xiàn)上英語(yǔ)網(wǎng)課教學(xué)總結(jié)
- 2024年新型勞務(wù)派遣合作框架協(xié)議
- 2024學(xué)校商店攤位租賃合同書(shū)(詳細(xì)規(guī)定租賃條件)
- 高一升高二暑假計(jì)劃(10篇)
- 《節(jié)能監(jiān)察的概念及其作用》
- 綜合布線(xiàn)系統(tǒng)竣工驗(yàn)收表
- 蔬菜會(huì)員卡策劃營(yíng)銷(xiāo)推廣方案多篇
- 導(dǎo)管滑脫應(yīng)急預(yù)案及處理流程
- (精選word)三對(duì)三籃球比賽記錄表
- 尿道損傷(教學(xué)課件)
- 大型火力發(fā)電廠專(zhuān)業(yè)詞匯中英文翻譯大全
- 火電廠生產(chǎn)崗位技術(shù)問(wèn)答1000問(wèn)(電力檢修)
- 八年級(jí)思想讀本《4.1“涉險(xiǎn)灘”與“啃硬骨頭”》教案(定稿)
- 高中語(yǔ)文教學(xué)課例《荷塘月色》課程思政核心素養(yǎng)教學(xué)設(shè)計(jì)及總結(jié)反思
- 度湖南省建設(shè)工程造價(jià)參考指標(biāo)
評(píng)論
0/150
提交評(píng)論