面向?qū)ο骿ava實(shí)現(xiàn)-06 -2集合與泛型詳細(xì)_第1頁(yè)
面向?qū)ο骿ava實(shí)現(xiàn)-06 -2集合與泛型詳細(xì)_第2頁(yè)
面向?qū)ο骿ava實(shí)現(xiàn)-06 -2集合與泛型詳細(xì)_第3頁(yè)
面向?qū)ο骿ava實(shí)現(xiàn)-06 -2集合與泛型詳細(xì)_第4頁(yè)
面向?qū)ο骿ava實(shí)現(xiàn)-06 -2集合與泛型詳細(xì)_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

129十二月2022第6章集合類與泛型程序設(shè)計(jì)229十二月20226.1Java中的集合類結(jié)構(gòu)

Java提供了集合類(Collection)及其API,于是用戶可以通過(guò)統(tǒng)一的操作接口,使得從一種數(shù)據(jù)結(jié)構(gòu)到另一種數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換極為方便,簡(jiǎn)化了程序員編程時(shí)的負(fù)擔(dān)。任何集合框架包括三部分內(nèi)容:對(duì)外的接口接口的實(shí)現(xiàn)對(duì)集合運(yùn)算的算法集合API的根是一個(gè)集合接口,存放于java.util包中。Collection接口定義了所有屬于集合的類都應(yīng)該具有的通用方法。329十二月2022

Java集合框架結(jié)構(gòu)由兩顆接口樹(shù)構(gòu)成:第一棵樹(shù)根節(jié)點(diǎn)為Collection接口,它定義了所有集合的基本操作,如添加、刪除、遍歷等。它的子接口Set、List等則提供了更加特殊的功能。第二棵樹(shù)根節(jié)點(diǎn)為Map接口。與哈希表類似,保持的是鍵值對(duì)的集合,可以通過(guò)鍵來(lái)實(shí)現(xiàn)對(duì)值元素的快速訪問(wèn)。429十二月2022Collection接口529十二月2022Map接口629十二月2022Collection:每個(gè)元素都是單一對(duì)象。List以特定順序容納元素。Set中不能有重復(fù)的元素。Map:每個(gè)元素都是一對(duì)key-value(鍵值/實(shí)值)對(duì)象,且每個(gè)元素中的鍵值都不能與其他元素中的鍵值相同。729十二月2022集合接口接口描述Collection能使你操作對(duì)象數(shù)組,它位于集合框架層次結(jié)構(gòu)的頂層List擴(kuò)展Collection,表示有序的,可包括重復(fù)元素的列表Set擴(kuò)展Collection,表示無(wú)序的,無(wú)重復(fù)元素的集合(數(shù)學(xué)上的含義)。SortedSet擴(kuò)展Set,對(duì)Set中元素進(jìn)行排序829十二月2022.2Collection接口Collection接口是構(gòu)造集合框架的基礎(chǔ)。它聲明所有集合類都將擁有的核心方法。包含下面幾種類型的方法增加元素,清除元素,判斷元素的存在返回迭代接口,把集合轉(zhuǎn)換成數(shù)組集合的大小929十二月2022.2Collection接口方法名功能說(shuō)明booleanadd(Objecto)插入單個(gè)對(duì)象booleanaddAll(Collectionc)添加另外一個(gè)集合對(duì)象c中的所有對(duì)象Object[]toArray()以數(shù)組的形式返回內(nèi)容Object[]toArray(Object[]a)以數(shù)組的形式返回內(nèi)容Iteratoriterator()返回一個(gè)實(shí)現(xiàn)了Iterator接口的對(duì)象voidclear()清空所有對(duì)象booleanremove(Objecto)刪除指定的對(duì)象booleanramoveAll(Collectionc)刪除c中所擁有的對(duì)象booleanretainAll(Collectionc)保留指定的對(duì)象booleancontains(Objecto)檢查是否包含有指定的對(duì)象booleancontainsAll(Collectionc)檢查是否包含c中所包含的對(duì)象booleanisEmpty()判斷集合是否為空intsize()獲取集合中的對(duì)象個(gè)數(shù)例-11029十二月2022.3Set接口Set接口是一種不包含重復(fù)元素的Collection的子接口。Set接口中并沒(méi)有引入新方法,它提供的基本方法和Collection接口類似。Set接口派生了一個(gè)SortedSet接口和一個(gè)抽象類AbstractSet。

1129十二月2022實(shí)現(xiàn)Set接口的類SortedSet接口用來(lái)描述有序的元素集合TreeSet實(shí)現(xiàn)了這個(gè)接口,它將放入其中的元素按序存放,要求其中的對(duì)象是可排序的。抽象類AbstractSet實(shí)現(xiàn)了部分Collection接口,并有一個(gè)子類HashSet,它以散列方式表示集合內(nèi)容。1229十二月2022HashSet類HashSet擴(kuò)展AbstractSet并且實(shí)現(xiàn)Set接口。它創(chuàng)建了一個(gè)使用哈希表存儲(chǔ)的集合,能快速定位一個(gè)元素,從而可以優(yōu)化查詢的速度,特別是在查找大集合時(shí)HashSet類比較有用。該類集使用散列表進(jìn)行存儲(chǔ)。在散列(hashing)中,一個(gè)關(guān)鍵字的信息內(nèi)容被用來(lái)確定唯一的一個(gè)值,稱為散列碼(hashcode)。而散列碼被用來(lái)當(dāng)作與關(guān)鍵字相連的數(shù)據(jù)的存儲(chǔ)下標(biāo)。存儲(chǔ)在HashSet中的元素必須正確覆蓋java.lang.Object中定義的hashCode()方法。HashSet的構(gòu)造函數(shù)如下:HashSet():創(chuàng)建一個(gè)空的哈希集。HashSet(Collectionc):創(chuàng)建一個(gè)哈希集,并且將集合c中所有元素添加進(jìn)去。HashSet(intinitialCapacity):創(chuàng)建一個(gè)擁有特定容量的空哈希集。HashSet(intinitialCapacity,floatloadFactor):創(chuàng)建一個(gè)擁有特定容量和加載因子的空哈希集。1329十二月2022loadFactor是0.01.0之間的一個(gè)數(shù),通常默認(rèn)為0.75。加載因子定義了哈希集合充滿什么程度時(shí)就要增加容量。即當(dāng)元素的數(shù)目大于哈希集容量和加載因子之積時(shí),哈希集容量將擴(kuò)展。例:HashSeths=newHashSet();hs.add("A");hs.add("B");hs.add("C");hs.add("D");hs.add("E");hs.add("F");hs.add("A");System.out.println(hs);[D,A,F,C,B,E]從輸出結(jié)果可以看出,元素并沒(méi)有按順序進(jìn)行存儲(chǔ),并且也沒(méi)有重復(fù)元素。[例-2]1429十二月2022TreeSet類TreeSet為使用樹(shù)結(jié)構(gòu)進(jìn)行存儲(chǔ)的Set接口提供了一個(gè)工具對(duì)象按升序存儲(chǔ)。訪問(wèn)和檢索是很快的。在存儲(chǔ)了大量的需要進(jìn)行快速檢索的排序信息的情況下,TreeSet是一個(gè)很好的選擇。1529十二月2022TreeSet的使用TreeSeths=newTreeSet();hs.add("D");hs.add("E");hs.add("F");hs.add("A");hs.add("B");hs.add("C"); hs.add("A");System.out.println(hs);該程序的輸出如下:[A,B,C,D,E,F]TreeSet按樹(shù)存儲(chǔ)其元素,它們被按照自然順序自動(dòng)安排,也不能有重復(fù)元素[例-3]1629十二月2022.4List接口List接口是包含有序元素的一種Collection子接口,其中的元素必須按序存放。元素之間的順序關(guān)系可以由插入的時(shí)間先后決定,也可以由元素值的大小決定。List接口使用類似于數(shù)組下標(biāo)的索引的概念表示元素在List中的位置。用戶能夠使用索引來(lái)訪問(wèn)List中的元素。索引從0開(kāi)始。為了保持元素的有序的特性,List接口新增加了大量的方法,使之能夠在序列中間根據(jù)具體位置添加和刪除元素。

1729十二月2022List接口的主要方法

方法名功能說(shuō)明voidadd(intindex,Objectelement)在指定位置上添加一個(gè)對(duì)象booleanaddAll(intindex,Collectionc)將c中的所有對(duì)象添加到指定位置ListIteratorlistIterator()返回一個(gè)ListIteratorListIteratorlistIterator(intindex)返回指定的ListIteratorObjectget(intindex)返回指定位置的對(duì)象Objectremove(intindex)刪除指定位置的對(duì)象Objectset(intindex,objectelement)用元素element取代位置index上的元素,返回被取代的元素intindexOf(objecto)返回第一個(gè)匹配對(duì)象的位置intlastIndexOf(objecto)返回最后一個(gè)匹配對(duì)象的索引1829十二月2022.4.1LinkedList類類ArrayList、LinkedList、Vector、Stack等實(shí)現(xiàn)了List接口。

LinkedList類提供了使用雙向鏈表實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的方法,可按序號(hào)檢索數(shù)據(jù),并能夠進(jìn)行向前或向后遍歷。由于插入數(shù)據(jù)時(shí)只需要記錄元素的前后項(xiàng)即可,所以插入數(shù)度較快,因此適合于在鏈表中間需要頻繁進(jìn)行插入和刪除的操作。LinkedList的構(gòu)造方法:LinkedList();創(chuàng)建一個(gè)空鏈表LinkedList(Collectionc);創(chuàng)建一個(gè)以集合c中元素為初始值的鏈表1929十二月2022Linkedlist接口的主要方法

方法名功能說(shuō)明publicbooleanadd(Objectelement)向鏈表末尾添加一個(gè)新的結(jié)點(diǎn)publicbooleanadd(intindex,Objecto)將對(duì)象o添加到鏈表中由index指定位置publicbooleanaddFirst(Objecto)將對(duì)象o添加到鏈表的頭部publicbooleanaddLast(Objecto)將對(duì)象向o添加到鏈表的末尾publicbooleanclear()刪除鏈表的所有節(jié)點(diǎn),成為空鏈表publicObjectremove(intindex)刪除指定位置上的結(jié)點(diǎn)publicObjectremove(Objecto)刪除首次出現(xiàn)含有o的結(jié)點(diǎn)publicObjectget(intindex)返回鏈表中index位置處的結(jié)點(diǎn)對(duì)象例-42029十二月2022ArrayList類是List接口的一個(gè)可變長(zhǎng)數(shù)組的實(shí)現(xiàn),即一個(gè)ArrayList類對(duì)象可以動(dòng)態(tài)改變大小。每個(gè)ArrayList類對(duì)象都有一個(gè)容量(Capacity),用于存儲(chǔ)元素的數(shù)組的大小。容量可隨著不斷添加新元素而自動(dòng)增加。序列以初始長(zhǎng)度創(chuàng)建,當(dāng)長(zhǎng)度超過(guò)時(shí),集合自動(dòng)變大;當(dāng)刪除對(duì)象時(shí),集合自動(dòng)變小。集合中允許存儲(chǔ)null值。ArrayList類的隨機(jī)訪問(wèn)速度快,但是向表中插入和刪除比較慢。當(dāng)需要插入大量元素時(shí),在插入前可以調(diào)用ensureCapacity方法來(lái)增加ArrayList的容量以提高插入效率。.4.2ArrayList類2129十二月2022ArrayList常用的構(gòu)造函數(shù)如下:ArrayList():構(gòu)建一個(gè)空的ArrayList對(duì)象。ArrayList(Collectionc):構(gòu)建一個(gè)ArrayList對(duì)象,并且將集合c中所有元素添加進(jìn)去。ArrayList(intinitialCapacity):構(gòu)建一個(gè)擁有特定容量的空ArrayList對(duì)象。ArrayList的很多成員方法與LinkedList相似,兩者的本質(zhì)區(qū)別是一個(gè)使用順序結(jié)構(gòu),另一個(gè)使用鏈表結(jié)構(gòu),因此,它也可以使用LinkedList類提供的方法進(jìn)行列表的操作。例-5.4.2ArrayList類2229十二月2022.5Iterator接口通常希望依次訪問(wèn)類集中的元素。到目前為止,除了使用集合對(duì)象的get()方法可以實(shí)現(xiàn)對(duì)集合中的元素的遍歷外,處理這個(gè)問(wèn)題的最簡(jiǎn)單方法是使用iterator,Iterator是一個(gè)或者實(shí)現(xiàn)Iterator或者實(shí)現(xiàn)ListIterator接口的對(duì)象。Iterator可以遍歷類集中的元素,從而獲得或刪除元素。ListIterator擴(kuò)展Iterator,允許雙向遍歷列表,并可以修改。

2329十二月2022Iterator接口的主要方法

方法名功能說(shuō)明booleanhasNext()判斷是否還有其他元素Objectnext()獲取下一個(gè)元素voidremove()刪除最后一次調(diào)用next方法返回的元素SetkeySet()返回Set類型的接口2429十二月2022Iterator迭代器只能前向循環(huán),如果需要雙向遍歷,則可以使用更高級(jí)的ListIterator迭代器,ListIterator接口繼承自Iterator接口。ListIterator迭代器除了有next()方法外,還新增了hasprevious()方法和previous()方法,實(shí)現(xiàn)前向遍歷。ListIterator還可以定位當(dāng)前的索引位置,調(diào)用nextIndex()和previousIndex()就可以實(shí)現(xiàn)。

ListIterator迭代器2529十二月2022ListIterator接口的主要方法方法名功能說(shuō)明voidadd(Objecto)插入新的對(duì)象voidset(Objecto)修改最后一次調(diào)用next方法返回的元素voidremove()刪除最后一次調(diào)用next方法返回的元素booleanhasPrevious()判斷前面是否還有元素Objectprevious()獲取前一個(gè)對(duì)象intnextIndex()獲取下一個(gè)元素的索引值intpreviousIndex()獲取上一個(gè)元素的索引值2629十二月2022Iterator使用ArrayListal=newArrayList();Iteratoritr=al.iterator(); while(itr.hasNext()) { Objectelement=itr.next(); System.out.print(element+""); }詳細(xì)例-6使用Iterator的一般步驟:調(diào)用集合對(duì)象的Iterator()方法得到一個(gè)指向集合序列第一個(gè)元素的迭代器;設(shè)置一個(gè)調(diào)用hasNext()方法的循環(huán),序列中是否還有元素。如果集合中還有元素,hasNext()返回true;在循環(huán)中,使用next()方法獲得集合序列中的下一個(gè)元素;如果需要?jiǎng)h除元素,可remove()方法將迭代器所返回的元素刪除。Remove()方法刪除next()方法最后一次從集合中訪問(wèn)的元素。2729十二月2022.6Map及HashMap接口

1.Map接口

Map中每項(xiàng)都是成對(duì)出現(xiàn)的,它提供了一組鍵值的映射即一個(gè)存儲(chǔ)關(guān)鍵字和值的關(guān)聯(lián)或者說(shuō)是關(guān)鍵字/值對(duì)的對(duì)象。存儲(chǔ)的每個(gè)對(duì)象都有一個(gè)相應(yīng)的關(guān)鍵字(key),關(guān)鍵字決定了對(duì)象在Map中的存儲(chǔ)位置。給定一個(gè)關(guān)鍵字,可以得到它的值。關(guān)鍵字和值都是對(duì)象,每一對(duì)關(guān)鍵字/值,叫做一項(xiàng)。關(guān)鍵字應(yīng)該是唯一的,但值是可以被重復(fù)的,且每個(gè)key只能映射一個(gè)value。用put(Objectkey,Objectvalue)方法即可將一個(gè)鍵與一個(gè)值對(duì)象相關(guān)聯(lián)。用get(Objectkey)可得到與此key對(duì)象所對(duì)應(yīng)的值對(duì)象。有些映射可以接收null關(guān)鍵字和null值。而有的則不行2829十二月2022Map接口的主要方法

方法名功能說(shuō)明Objectput(Objectkey,Objectvalue)插入新的對(duì)象,并用key作為其鍵字voidputAll(Mapt)將另一個(gè)Map中的所有對(duì)象復(fù)制進(jìn)來(lái)SetentrySet()返回映射中的關(guān)鍵字-值對(duì)的集合SetkeySet()返回映射中所有關(guān)鍵字的集合Collectionvalues()返回映射中所有值的集合Objectremove(Objectkey)刪除指定的對(duì)象Objectget(Objectkey)獲取與key相聯(lián)系的對(duì)象booleancontainsKey(Objectkey)判斷是否包含指定的鍵值booleancontainsValue(Objectvalue)判斷是否包含指定的對(duì)象2929十二月2022Map接口的一個(gè)抽象類是AbstractMap。在這個(gè)抽象類中,部分地實(shí)現(xiàn)了Map接口中的成員方法,使得具體的映射類不必實(shí)現(xiàn)Map接口中的每個(gè)成員方法。AstractMap抽象類有三個(gè)子類:TreeMapHashMapWeakHashMap:

AstractMap抽象類3029十二月2022

(1)TreeMap描述了一個(gè)按鍵值升序排列的映射,它有一些擴(kuò)展的方法,如firstKey(),lastKey()等,還可以從TreeMap中指定一個(gè)范圍以取得其子Map。

(2)HashMap描述的一個(gè)映射中允許存儲(chǔ)空對(duì)象,由于鍵必須唯一,所以只能有一個(gè)空鍵值。(3)WeakHashMap是一種改進(jìn)的HashMap,它描述了一個(gè)映射,當(dāng)集合中的某些內(nèi)容不再使用時(shí)需清除掉無(wú)用的數(shù)據(jù),并使用垃圾回收機(jī)制進(jìn)行回收。AstractMap抽象類3129十二月2022HashMap類使用散列表實(shí)現(xiàn)Map接口HashMap通過(guò)哈希運(yùn)算可以快速查找一個(gè)鍵,因此在適合于在Map中插入、刪除和定位元素。如果要按照自然順序或者自定義順序遍歷關(guān)鍵字,TreeMap會(huì)更好些。

2.HashMap

3229十二月2022由于HashMap實(shí)現(xiàn)了Map接口,因此它沒(méi)有自己的新方法。HashMap的構(gòu)造方法如下:HashMap():創(chuàng)建一個(gè)空的HashMap集合。HashMap(Mapt):創(chuàng)建一個(gè)哈希集,將t中所有元素添加進(jìn)去。HashMap(intinitialCapacity):創(chuàng)建一個(gè)擁有特定容量的空HashMap集合。HashMap(intinitialCapacity,floatloadFactor):創(chuàng)建一個(gè)擁有特定容量和加載因子的空HashMap。3329十二月2022

散列表中的容量是指能夠存儲(chǔ)對(duì)象的數(shù)量。當(dāng)對(duì)象存儲(chǔ)的數(shù)目到達(dá)容量乘以加載因子的值時(shí),容量將會(huì)自動(dòng)地增加到原容量的2倍加1,加1的目的是確保散列表的容量為質(zhì)數(shù)或奇數(shù)。例如:HashMapaMap=newHashMap(151,0.6f);

aMap對(duì)象最初的容量為151,當(dāng)存儲(chǔ)對(duì)象的數(shù)量達(dá)到1時(shí),容量將會(huì)自動(dòng)增加到303。3429十二月2022HashMap類的主要成員方法方法描述Objectput(Objectkey,Objectvalue)用鍵值key存儲(chǔ)對(duì)象valuevoidputAll(Mapmap)將map中的所有鍵值/對(duì)象傳遞給當(dāng)前的散列表Objectget(Objectkey)返回鍵值key所對(duì)應(yīng)的對(duì)象remove(Objectkey)刪除key鍵值所對(duì)應(yīng)的對(duì)象SetKeySet()返回一個(gè)Set對(duì)象,其內(nèi)容為所有的鍵值SetentrySet()返回一個(gè)Set對(duì)象,其內(nèi)容為所有的鍵值/對(duì)象對(duì)Collectionvalues()返回一個(gè)Collection對(duì)象,其內(nèi)容為散列表中存儲(chǔ)的所有對(duì)象ObjectgetKey()返回對(duì)象的鍵值ObjectgetValue()返回所對(duì)應(yīng)的對(duì)象voidsetValue(Objectnew)將對(duì)象設(shè)置為new3529十二月2022例:HashMaphm=newHashMap //把元素加入映射

hm.put("John",newInteger(66)); hm.put("Tom",newInteger(67)); hm.put("Jane",newInteger(68));例6-73629十二月20223.TreeMap類

TreeMap類通過(guò)使用樹(shù)實(shí)現(xiàn)Map接口。允許快速檢索。應(yīng)該注意的是,不像散列映射,樹(shù)映射保證它的元素按照關(guān)鍵字升序排序。下面的TreeMap構(gòu)造函數(shù)定義為:TreeMap()TreeMap(Comparatorcomp)TreeMap(Mapm)TreeMap(SortedMapsm)3729十二月2022TreeMap的使用TreeMaptm=newTreeMap(); //放入元素

tm.put("E",newDouble(3444.44)); tm.put("A",newDouble(3444.34)); tm.put("B",newDouble(124.22)); tm.put("C",newDouble(1338.00));Iterator<String>i=set.iterator(); while(i.hasNext()) { Stringkey=i.next(); System.out.println(key+":"+tm.get(key).doubleValue()); }3829十二月2022

Vector(向量)是Java.util包提供的工具類,是類似數(shù)組的一種順序存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)。它允許將不同類型的元素存儲(chǔ)在一個(gè)向量中,而且元素的個(gè)數(shù)可變,因此Vector類提供了實(shí)現(xiàn)可增長(zhǎng)數(shù)組的功能,以適應(yīng)創(chuàng)建Vector對(duì)象后進(jìn)行添加或刪除的操作,使得應(yīng)用程序的操作方式變得更加方便、靈活。6.7Vector類3929十二月2022Vector類適合在如下情況中使用:需要處理的對(duì)象數(shù)目不確定,序列中的元素都是對(duì)象或者可以表示為對(duì)象。需要將不同類的對(duì)象組合成一個(gè)數(shù)據(jù)序列需要在對(duì)象序列中頻繁地插入和刪除需要經(jīng)常定位元素或者進(jìn)行其他查詢操作在不同類之間傳遞大量數(shù)據(jù)。4029十二月20221.創(chuàng)建Vector類的對(duì)象

Vector類有如下4個(gè)構(gòu)造函數(shù):publicVector():創(chuàng)建最多允許存放10個(gè)元素的向量,每次擴(kuò)展向量元素的數(shù)目為原向量元素?cái)?shù)目的一倍。publicVector(intinitialCapacity):創(chuàng)建最多允許存放initialCapacity個(gè)元素的向量,每次擴(kuò)展向量元素的數(shù)目為原向量元素?cái)?shù)目的一倍。

4129十二月2022

publicVector(intinitialCapacity,intcapacityIncrement):創(chuàng)建最多允許存放initialCapacity個(gè)元素的向量,每次擴(kuò)展向量元素的數(shù)目為capacityIncrement。publicVector(Collectionc):創(chuàng)建最多允許比參數(shù)帶入的集合c的元素?cái)?shù)目多10%的向量,每次擴(kuò)展向量元素的數(shù)目為原向量元素?cái)?shù)目的一倍。4229十二月2022

其中,initialCapacity表示剛創(chuàng)建時(shí)Vector序列包含的元素?cái)?shù)目;capacityIncrement表示向Vector序列中追加元素時(shí)每次增加的個(gè)數(shù)。下面是幾個(gè)創(chuàng)建向量對(duì)象的例子。VectorvectorObject1=newVector();VectorvectorObject2=newVector(200);VectorvectorObject3=newVector(200,15);在使用Vector時(shí),需要特別注意的是先創(chuàng)建后使用,否則容易造成溢出或者空指針異常4329十二月2022

Vector類的主要成員方法(1)成員方法描述intcapacity()返回當(dāng)前向量所允許存放的元素?cái)?shù)目,通常被稱為向量容量。intsize()返回向量中當(dāng)前的元素?cái)?shù)目。voidcopyInto(ObjectanArray[])將向量中的元素復(fù)制到anArray數(shù)組中。intindexOf(Objectelem)將從前向后搜索對(duì)象elem。ObjectelementAt(intindex)這個(gè)成員方法將返回向量下標(biāo)為index對(duì)應(yīng)的元素。voidsetElementAt(Objectobj,intindex)將對(duì)象obj存放到下標(biāo)為index的位置。voidremoveElementAt(intindex)刪除下標(biāo)為index的對(duì)象,后面的元素依次向前移動(dòng)一個(gè)位置。voidinsertElementAt(Objectobj,intindex)在下標(biāo)為index處插入對(duì)象obj,原index處以后的元素依次向后移動(dòng)一個(gè)位置。voidaddElement(Objectobj)將對(duì)象obj追加在向量的尾部4429十二月2022

Vector類的主要成員方法(2)成員方法描述booleanremoveElement(Objectobj)從向量中刪除第一次出現(xiàn)的obj對(duì)象。Objectclone()實(shí)現(xiàn)向量復(fù)制Objectget(intindex)返回下標(biāo)為index的向量元素。booleanadd(Objecto)將對(duì)象o追加在向量的尾部voidadd(intindex,Objectobj)將新元素添加到指定的位置Objectremove(intindex)刪除index位置的對(duì)象。如果index非法,拋出ArrayIndexOutOfBoundsExceptio異常StringtoString()將向量元素用字符串形式表示例6-84529十二月20226.8Stack類在Java語(yǔ)言中,Stack類是java.util包中專門用來(lái)實(shí)現(xiàn)棧的工具類。Stack類繼承自Vector類,因此它是Vector的一個(gè)子類,實(shí)現(xiàn)了一個(gè)后進(jìn)先出的堆棧。Stack類繼承了Vector類的所有方法,還新增了一些方法使得Vector類能夠?qū)崿F(xiàn)堆棧的操作。4629十二月20221、創(chuàng)建Stack類對(duì)象publicStack();它建立一個(gè)空的堆棧2、壓棧與出棧操作publicObjectpush(Objectitem):將指定的對(duì)象壓入棧publicObjectpop():將棧頂?shù)膶?duì)象從棧中取出3、檢查棧是否為空publicbooleanempty():測(cè)試堆棧是否為空,若堆棧中沒(méi)有對(duì)象元素,則返回true,否則返回false4、查看棧頂端的數(shù)據(jù),但不刪除該數(shù)據(jù)。publicobjectpeek()5、獲取數(shù)據(jù)在堆棧中的位置。最頂端的位置是1,向下依次增加。如果堆棧不含有此數(shù)據(jù),則返回-1。publicsearch(Objectdata)例6-64729十二月2022泛型是JDK1.5以上版本的新特性,泛型的本質(zhì)是參數(shù)化類型,也就是說(shuō)所操作的數(shù)據(jù)類型被指定為一個(gè)參數(shù)。這種參數(shù)類型可以用在類、接口和方法的創(chuàng)建中,分別稱為泛型類、泛型接口和泛型方法。它在使用集合時(shí),提供了一種編譯時(shí)類型安全檢查功能,并能減少類型強(qiáng)制轉(zhuǎn)化的麻煩。當(dāng)你從一個(gè)集合中取出一個(gè)元素時(shí),例如使用Iterator接口中的next()方法,其返回值的類型是Object,在使用這個(gè)元素時(shí),需要把返回值轉(zhuǎn)換為元素本身的類型。這種類型轉(zhuǎn)化是不安全的。這種轉(zhuǎn)換是要求開(kāi)發(fā)者對(duì)實(shí)際參數(shù)類型可以預(yù)知的情況下進(jìn)行的。對(duì)于強(qiáng)制類型轉(zhuǎn)換錯(cuò)誤的情況,編譯器可能不提示錯(cuò)誤,但在運(yùn)行的時(shí)候可能會(huì)出現(xiàn)異常,這是一個(gè)安全隱患。泛型的引入很好地解決了這一問(wèn)題6.6泛型程序設(shè)計(jì)4829十二月2022泛型類的定義泛型類的定義:

classjava_generics<T><>里邊的T的類型可以是任意的,由實(shí)際對(duì)象的類型決定。而在使用泛型類時(shí),通過(guò)<>內(nèi)的參數(shù)指定參數(shù)類型。4929十二月2022未使用泛化的代碼ArrayLista=newArrayList();a.add(newInteger(1));a.add(newInteger(2));for(Itera

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論