資源描述:
《Core java 經(jīng)典教程八》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、集合類集合(集合類的對(duì)象)是管理其他若干對(duì)象的,類似于C++標(biāo)準(zhǔn)模板庫中的容器,不過JAVA的集合類的對(duì)象中可以存放多種類型的對(duì)象。接口和類共同構(gòu)成了一個(gè)集合框架,集合的概念,一個(gè)對(duì)象可以裝載多個(gè)對(duì)象,就是集合對(duì)象。集合框架1,集合接口Collection接口List接口Set接口SortedSet接口Collection存儲(chǔ)并管理多個(gè)對(duì)象的對(duì)象,集合中的每個(gè)元素都是對(duì)象。Map,Map中沒有對(duì)象,而是鍵值對(duì),由Key,value組成的鍵值對(duì),Key是不可重復(fù)的。value是可以相同的,Key和value是一一對(duì)應(yīng)的。集合中用到的類,接口在java.util包中,使用時(shí)注意將其引入impo
2、rt。Collection接口(以下介紹其子接口)1)List,一個(gè)List的實(shí)現(xiàn)類的對(duì)象在管理多個(gè)對(duì)象時(shí)會(huì)按順序組織對(duì)象(即按照將對(duì)象放入的順序存儲(chǔ)),List實(shí)現(xiàn)類的對(duì)象是有順序的,List實(shí)現(xiàn)類對(duì)象中的內(nèi)容是是可重復(fù)的。(注意,順序和排序的區(qū)別)2)Set,一個(gè)Set的實(shí)現(xiàn)類表示一個(gè)數(shù)學(xué)概念上的集合,Set的實(shí)現(xiàn)類的對(duì)象中的元素是無順序的,也就是不會(huì)按照輸入順序來存放,Set的實(shí)現(xiàn)類對(duì)象中的元素是不重復(fù)的。3)SortedSet,他是Set的子接口,他的實(shí)現(xiàn)類會(huì)對(duì)集合中的元素進(jìn)行排序。但是要指定排序規(guī)則,他會(huì)按排序規(guī)則進(jìn)行排序。Map接口(以下介紹其子接口)Map接口SortedMa
3、p接口SortedMap,這個(gè)接口的實(shí)現(xiàn)類同樣可以實(shí)現(xiàn),不過是對(duì)鍵值對(duì)中的Key進(jìn)行排序,這個(gè)接口的實(shí)現(xiàn)類也是要指定排序規(guī)則的。JDK1.4中的集合是不安全的對(duì)象,JDK5.0中解決了這個(gè)問題。2,接口的實(shí)現(xiàn)類List接口的實(shí)現(xiàn)類List接口ArrayList類LinkedList類Vector類1)ArrayList是接近于數(shù)組功能的集合類,ArryList的實(shí)質(zhì)就是一個(gè)會(huì)自動(dòng)增長的數(shù)組,ArrayList是用封裝的數(shù)組來實(shí)現(xiàn)的List接口的。Collection的實(shí)現(xiàn)類對(duì)象的遍歷方式是用迭代來實(shí)現(xiàn)的。在使用迭代器時(shí)先要活得一個(gè)迭代器的對(duì)象,Iterator(迭代器接口)這是一個(gè)接口,迭
4、代器是在集合類中實(shí)現(xiàn)的,也就是說,他是一個(gè)內(nèi)部類(匿名內(nèi)部類)實(shí)現(xiàn)的。Iterator接口中定義的常用方法方法hasNext(),next()。hasNext(),這個(gè)方法會(huì)使用一個(gè)游標(biāo),并通過判斷游標(biāo)指向的位置是否存放有對(duì)象。next()方法也是Iterator接口中定義好的方法,這個(gè)方法會(huì)使游標(biāo)指向下一個(gè)元素的位置,游標(biāo)會(huì)跳過第一個(gè)元素,并返回其中的內(nèi)容。Collections(注意,這個(gè)不是Collection接口)這是一個(gè)工具類,也是java.util包中的,這個(gè)類中的sort(list接口的實(shí)現(xiàn)類的對(duì)象)方法,其參數(shù)是一個(gè)集合類的對(duì)象,這個(gè)方法使用來對(duì)集合類的對(duì)象進(jìn)行排序的。以后
5、,我將以集合這個(gè)名字來稱呼集合類的對(duì)象。,對(duì)于字符串對(duì)象內(nèi)容的集合來說會(huì)按字典順序排序(升序),對(duì)于數(shù)字內(nèi)容的集合排序也會(huì)按照升序排序。集合排序排序可一份為兩部分內(nèi)容,一個(gè)是排序的規(guī)則,也就是按照什么來進(jìn)行排序,并且排成什么樣的順序。第二個(gè)就是排序的算法,他決定了排序的效率。在對(duì)自定義的集合內(nèi)容類型排序時(shí),需要先定義那個(gè)類型的排序規(guī)則。Comparable接口,這個(gè)接口中只定義了一個(gè)compareTo(Objecto),方法的返回至類型是整型,如果當(dāng)前對(duì)象大于參數(shù)對(duì)象就返回正數(shù),當(dāng)前對(duì)象等于參數(shù)對(duì)象是就返回0,當(dāng)前對(duì)象小于參數(shù)對(duì)象時(shí)就返回負(fù)值,這樣寫就是升序排列,反之則是進(jìn)行降序排列,在實(shí)
6、現(xiàn)這個(gè)接口中的方法時(shí),返回值定義方式,只有這兩種。根據(jù)指定類型的排序規(guī)則實(shí)現(xiàn)了Comparable接口,那么就可以對(duì)存有這個(gè)類型的集合進(jìn)行整體排序。Comparable接口,也叫做可比較接口。這個(gè)接口在java.lang包下。只要實(shí)現(xiàn)了這個(gè)接口,就是可排序的。接下來介紹另外一種對(duì)自定義類型對(duì)象的集合整體排序的方法,也就是實(shí)現(xiàn)比較器接口(Comparator),這個(gè)接口中定義了一個(gè)compare(Objecto1,Objecto2)方法來比較兩個(gè)對(duì)象,這個(gè)方法的返回值定義和上面介紹的那個(gè)方法是一樣。注意:在API,幫助文檔中以上兩個(gè)方法的參數(shù)類型是T,這代表的模板類型,也就是集合中存放的內(nèi)容
7、的類型,在JDK1.4中其參數(shù)就是Object類型,模板類型的詳細(xì)內(nèi)容會(huì)在最后的JDK5.0新特性中講到。Comparator接口可以在匿名內(nèi)部類中實(shí)現(xiàn),Collections中的sort(集合了的對(duì)象,比較器)方法,可以對(duì)自定義類型內(nèi)容的集合進(jìn)行整體排序。集合排序的實(shí)例:publicclassEmployeeimplementsComparable{privateStringname;privateintage;pri