資源描述:
《使用泛型和集合框架.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第11章使用泛型和集合框架目標(biāo)當(dāng)完成本章后,你應(yīng)該能夠:?了解集合?了解并使用List接口?了解并使用Set接口?了解并使用Map接口?了解遺留的集合類?通過實(shí)現(xiàn)Comparable和Comparator接口創(chuàng)建自然排序和自定義排序?使用泛型集合?了解泛型類中類型參數(shù)的使用?重構(gòu)已存在的非泛型代碼?編寫對集合進(jìn)行迭代的程序?了解增強(qiáng)型for循環(huán)Collection與Map接口?集合(collection)是個管理一組對象的單一對象。在集合內(nèi)的對象稱之為元素(elements)。通常,集合可以處理很多
2、種類型的對象,這些類型的對象都屬于一個特定的類型(也就是說,它們具有共同的父類型)。?集合API包含了如下將對象組為一體的接口:lCollection——一組稱之為元素的對象;其實(shí)現(xiàn)決定了是否有特定的順序和是否允許有重復(fù)元素。lList——有順序的集合;可允許元素重復(fù)lSet——沒有順序的集合;不允許元素重復(fù)元素的類型?在JavaSE5.0發(fā)布以前,集合維護(hù)對Object類型的對象的引用。這可以使任何對象存放在集合內(nèi)。從集合中獲取對象后,在使用之前必須先正確使用強(qiáng)制類型轉(zhuǎn)換。但是,到了JavaSE5
3、.0平臺和以后版本,可以使用泛型集合功能指定要存放在集合中的對象類型。避免了獲取時做強(qiáng)制類型轉(zhuǎn)換的麻煩。Map接口通用集合實(shí)現(xiàn)列表List?列表List是一個有順序的Collection,允許有重復(fù)元素,主要實(shí)現(xiàn)類包括ArrayList和LinkedList,前者是順序表,后者是鏈表。?程序11-1的示例中,程序聲明了一個被賦予新的ArrayList對象的List類型的變量(list)。然后添加一些元素,將list印到標(biāo)準(zhǔn)輸出。因?yàn)長ist允許有重復(fù)元素,程序11-1的第10行和第11行的add方法
4、返回true。列表List1importjava.util.*;2publicclassArrayListExample{3publicstaticvoidmain(String[]args){4Listlist=newArrayList();5list.add("one");6list.add("second");7list.add("3rd");8list.add(newInteger(4));9list.add(newFloat(5.0F));10list.add("second");//重復(fù)
5、,被添加11list.add(newInteger(4));//重復(fù),被添加12System.out.println(list);13}14}集合Set?程序11-2的示例中,程序聲明了一個已初始化為newHashSet的Set類型的變量(set)。然后添加一些元素,并將set打印到標(biāo)準(zhǔn)輸出中。程序11-2的第10行和第11行嘗試對set添加重復(fù)的值。因?yàn)橹貜?fù)值無法添加到Set,所以add方法返回false。集合Set1importjava.util.*;2publicclassSetExample
6、{3publicstaticvoidmain(String[]args){4Setset=newHashSet();5set.add("one");6set.add("second");7set.add("3rd");8set.add(newInteger(4));9set.add(newFloat(5.0F));10set.add("second");//重復(fù),不被添加11set.add(newInteger(4));//重復(fù),不被添加12System.out.println(set);13}14
7、}映射Map?Map有時稱之為關(guān)聯(lián)數(shù)組。Map對象描述了鍵(key)與值(value)的映射關(guān)系。根據(jù)定義,Map對象不允許重復(fù)鍵或空鍵,一個鍵最多只能對應(yīng)一個值。?Map接口提供使映射內(nèi)容被視為集合的三個方法:entrySet–返回包括所有鍵值對的集合keySet–返回映射所有鍵的集合values–返回包含映射內(nèi)所有值的集合Map?Map接口并沒有繼承Collection接口,因?yàn)樗砹擞成洌菍ο蟮募?。SortedMap接口繼承Map接口。實(shí)現(xiàn)Map接口的一些類有HashMap、TreeM
8、ap、IdentityHashMap和WeakHashMap。這些映射集合實(shí)現(xiàn)的迭代器所表示的順序只針對每個特定的迭代器。映射Map?程序11-3的示例中,程序聲明了一個Map類型的變量map,并賦予它新的HashMap對象。然后通過使用put操作添加一些元素。為了證明map不允許有重復(fù)鍵,程序嘗試使用存在的鍵添加新的值。這將導(dǎo)致以前添加的值被新的值取代。隨后程序使用集合查看操作keySet、values和entrySet獲取map的內(nèi)容。1importjava.ut