java基礎(chǔ)視頻等多個(gè)文件集合1-collection和set_第1頁(yè)
java基礎(chǔ)視頻等多個(gè)文件集合1-collection和set_第2頁(yè)
java基礎(chǔ)視頻等多個(gè)文件集合1-collection和set_第3頁(yè)
java基礎(chǔ)視頻等多個(gè)文件集合1-collection和set_第4頁(yè)
java基礎(chǔ)視頻等多個(gè)文件集合1-collection和set_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論