已閱讀5頁(yè),還剩5頁(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)介
畢業(yè)設(shè)計(jì)外文文獻(xiàn)原文及譯文HIGHLEVELPROGRAMMINGLANGUAGEJAVACOLLECTIONSOFOBJECTS高級(jí)編程語(yǔ)言JAVA之集合與對(duì)象學(xué)生姓名學(xué)號(hào)系別專(zhuān)業(yè)指導(dǎo)教師2015年5月電子與計(jì)算機(jī)科學(xué)技術(shù)系網(wǎng)絡(luò)工程HIGHLEVELPROGRAMMINGLANGUAGEJAVACOLLECTIONSOFOBJECTSITSAFAIRLYSIMPLEPROGRAMTHATHASONLYAFIXEDQUANTITYOFOBJECTSWITHKNOWNLIFETIMESINGENERAL,YOURPROGRAMSWILLALWAYSBECREATINGNEWOBJECTSBASEDONSOMECRITERIATHATWILLBEKNOWNONLYATTHETIMETHEPROGRAMISRUNNINGYOUWONTKNOWUNTILRUNTIMETHEQUANTITYOREVENTHEEXACTTYPEOFTHEOBJECTSYOUNEEDTOSOLVETHEGENERALPROGRAMMINGPROBLEM,YOUNEEDTOBEABLETOCREATEANYNUMBEROFOBJECTS,ANYTIME,ANYWHERESOYOUCANTRELYONCREATINGANAMEDREFERENCETOHOLDEACHONEOFYOUROBJECTSMYOBJECTMYREFERENCESINCEYOULLNEVERKNOWHOWMANYOFTHESEYOULLACTUALLYNEEDMOSTLANGUAGESPROVIDESOMEWAYTOSOLVETHISRATHERESSENTIALPROBLEMJAVAHASSEVERALWAYSTOHOLDOBJECTSORRATHER,REFERENCESTOOBJECTSTHEBUILTINTYPEISTHEARRAY,WHICHHASBEENDISCUSSEDBEFOREALSO,THEJAVAUTILITIESLIBRARYHASAREASONABLYCOMPLETESETOFCONTAINERCLASSESALSOKNOWNASCOLLECTIONCLASSES,BUTBECAUSETHEJAVA2LIBRARIESUSETHENAMECOLLECTIONTOREFERTOAPARTICULARSUBSETOFTHELIBRARY,ISHALLALSOUSETHEMOREINCLUSIVETERM“CONTAINER”CONTAINERSPROVIDESOPHISTICATEDWAYSTOHOLDANDEVENMANIPULATEYOUROBJECTSARRAYSHOLDINGOBJECTSISTHEFOCUSOFTHISCHAPTER,ANDANARRAYISJUSTONEWAYTOHOLDOBJECTSBUTTHEREAREANUMBEROFOTHERWAYSTOHOLDOBJECTS,SOWHATMAKESANARRAYSPECIALTHEREARETWOISSUESTHATDISTINGUISHARRAYSFROMOTHERTYPESOFCONTAINERSEFFICIENCYANDTYPETHEARRAYISTHEMOSTEFFICIENTWAYTHATJAVAPROVIDESTOSTOREANDRANDOMLYACCESSASEQUENCEOFOBJECTREFERENCESTHEARRAYISASIMPLELINEARSEQUENCE,WHICHMAKESELEMENTACCESSFAST,BUTYOUPAYFORTHISSPEEDWHENYOUCREATEANARRAYOBJECT,ITSSIZEISFIXEDANDCANNOTBECHANGEDFORTHELIFETIMEOFTHATARRAYOBJECTYOUMIGHTSUGGESTCREATINGANARRAYOFAPARTICULARSIZEANDTHEN,IFYOURUNOUTOFSPACE,CREATINGANEWONEANDMOVINGALLTHEREFERENCESFROMTHEOLDONETOTHENEWONETHISISTHEBEHAVIOROFTHEARRAYLISTCLASS,WHICHWILLBESTUDIEDLATERINTHISCHAPTERHOWEVER,BECAUSEOFTHEOVERHEADOFTHISFLEXIBILITY,ANARRAYLISTISMEASURABLYLESSEFFICIENTTHANANARRAYINC,THEVECTORCONTAINERCLASSDOESKNOWTHETYPEOFOBJECTSITHOLDS,BUTITHASADIFFERENTDRAWBACKWHENCOMPAREDWITHARRAYSINJAVATHECVECTORSOPERATORDOESNTDOBOUNDSCHECKING,SOYOUCANRUNPASTTHEEND1INJAVA,YOUGETBOUNDSCHECKINGREGARDLESSOFWHETHERYOUREUSINGANARRAYORACONTAINERYOULLGETARUNTIMEEXCEPTIONIFYOUEXCEEDTHEBOUNDSTHISTYPEOFEXCEPTIONINDICATESAPROGRAMMERERROR,ANDTHUSYOUDONTNEEDTOCHECKFORITINYOURCODEASANASIDE,THEREASONTHECVECTORDOESNTCHECKBOUNDSWITHEVERYACCESSISSPEEDINJAVAYOUHAVETHECONSTANTPERFORMANCEOVERHEADOFBOUNDSCHECKINGALLTHETIMEFORBOTHARRAYSANDCONTAINERSTHEOTHERGENERICCONTAINERCLASSESLIST,SET,ANDMAP,ALLDEALWITHOBJECTSASIFTHEYHADNOSPECIFICTYPETHATIS,THEYTREATTHEMASTYPEOBJECT,THEROOTCLASSOFALLCLASSESINJAVATHISWORKSFINEFROMONESTANDPOINTYOUNEEDTOBUILDONLYONECONTAINER,ANDANYJAVAOBJECTWILLGOINTOTHATCONTAINEREXCEPTFORPRIMITIVESTHESECANBEPLACEDINCONTAINERSASCONSTANTSUSINGTHEJAVAPRIMITIVEWRAPPERCLASSES,ORASCHANGEABLEVALUESBYWRAPPINGINYOUROWNCLASSTHISISTHESECONDPLACEWHEREANARRAYISSUPERIORTOTHEGENERICCONTAINERSWHENYOUCREATEANARRAY,YOUCREATEITTOHOLDASPECIFICTYPETHISMEANSTHATYOUGETCOMPILETIMETYPECHECKINGTOPREVENTYOUFROMPUTTINGTHEWRONGTYPEIN,ORMISTAKINGTHETYPETHAT1ITSPOSSIBLE,HOWEVER,TOASKHOWBIGTHEVECTORIS,ANDTHEATMETHODDOESPERFORMBOUNDSCHECKINGYOUREEXTRACTINGOFCOURSE,JAVAWILLPREVENTYOUFROMSENDINGANINAPPROPRIATEMESSAGETOANOBJECT,EITHERATCOMPILETIMEORATRUNTIMESOITSNOTMUCHRISKIERONEWAYORTHEOTHER,ITSJUSTNICERIFTHECOMPILERPOINTSITOUTTOYOU,FASTERATRUNTIME,ANDTHERESLESSLIKELIHOODTHATTHEENDUSERWILLGETSURPRISEDBYANEXCEPTIONFOREFFICIENCYANDTYPECHECKINGITSALWAYSWORTHTRYINGTOUSEANARRAYHOWEVER,WHENYOURETRYINGTOSOLVEAMOREGENERALPROBLEMARRAYSCANBETOORESTRICTIVEARRAYSAREFIRSTCLASSOBJECTSREGARDLESSOFWHATTYPEOFARRAYYOUREWORKINGWITH,THEARRAYIDENTIFIERISACTUALLYAREFERENCETOATRUEOBJECTTHATSCREATEDONTHEHEAPTHISISTHEOBJECTTHATHOLDSTHEREFERENCESTOTHEOTHEROBJECTS,ANDITCANBECREATEDEITHERIMPLICITLY,ASPARTOFTHEARRAYINITIALIZATIONSYNTAX,OREXPLICITLYWITHANEWEXPRESSIONPARTOFTHEARRAYOBJECTINFACT,THEONLYFIELDORMETHODYOUCANACCESSISTHEREADONLYLENGTHMEMBERTHATTELLSYOUHOWMANYELEMENTSCANBESTOREDINTHATARRAYOBJECTTHESYNTAXISTHEONLYOTHERACCESSTHATYOUHAVETOTHEARRAYOBJECTTHEARRAYSCLASSINJAVAUTIL,YOULLFINDTHEARRAYSCLASS,WHICHHOLDSASETOFSTATICMETHODSTHATPERFORMUTILITYFUNCTIONSFORARRAYSTHEREAREFOURBASICMETHODSEQUALS,TOCOMPARETWOARRAYSFOREQUALITYFILL,TOFILLANARRAYWITHAVALUESORT,TOSORTTHEARRAYANDBINARYSEARCH,TOFINDANELEMENTINASORTEDARRAYALLOFTHESEMETHODSAREOVERLOADEDFORALLTHEPRIMITIVETYPESANDOBJECTSINADDITION,THERESASINGLEASLISTMETHODTHATTAKESANYARRAYANDTURNSITINTOALISTCONTAINERWHILEUSEFUL,THEARRAYSCLASSSTOPSSHORTOFBEINGFULLYFUNCTIONALFOREXAMPLE,ITWOULDBENICETOBEABLETOEASILYPRINTTHEELEMENTSOFANARRAYWITHOUTHAVINGTOCODEAFORLOOPBYHANDEVERYTIMEANDASYOULLSEE,THEFILLMETHODONLYTAKESASINGLEVALUEANDPLACESITINTHEARRAY,SOIFYOUWANTEDFOREXAMPLETOFILLANARRAYWITHRANDOMLYGENERATEDNUMBERS,FILLISNOHELPTHUSITMAKESSENSETOSUPPLEMENTTHEARRAYSCLASSWITHSOMEADDITIONALUTILITIES,WHICHWILLBEPLACEDINTHEPACKAGECOMBRUCEECKELUTILFORCONVENIENCETHESEWILLPRINTANARRAYOFANYTYPE,ANDFILLANARRAYWITHVALUESOROBJECTSTHATARECREATEDBYANOBJECTCALLEDAGENERATORTHATYOUCANDEFINEINTRODUCTIONTOCONTAINERSTOME,CONTAINERCLASSESAREONEOFTHEMOSTPOWERFULTOOLSFORRAWDEVELOPMENTBECAUSETHEYSIGNIFICANTLYINCREASEYOURPROGRAMMINGMUSCLETHEJAVA2CONTAINERSREPRESENTATHOROUGHREDESIGN5OFTHERATHERPOORSHOWINGSINJAVA10AND11SOMEOFTHEREDESIGNMAKESTHINGSTIGHTERANDMORESENSIBLEITALSOFILLSOUTTHEFUNCTIONALITYOFTHECONTAINERSLIBRARY,PROVIDINGTHEBEHAVIOROFLINKEDLISTS,QUEUES,ANDDEQUESDOUBLEENDEDQUEUES,PRONOUNCED“DECKS”THEDESIGNOFACONTAINERSLIBRARYISDIFFICULTTRUEOFMOSTLIBRARYDESIGNPROBLEMSINC,THECONTAINERCLASSESCOVEREDTHEBASESWITHMANYDIFFERENTCLASSESTHISWASBETTERTHANWHATWASAVAILABLEPRIORTOTHECCONTAINERCLASSESNOTHING,BUTITDIDNTTRANSLATEWELLINTOJAVAONTHEOTHEREXTREME,IVESEENACONTAINERSLIBRARYTHATCONSISTSOFASINGLECLASS,“CONTAINER,”WHICHACTSLIKEBOTHALINEARSEQUENCEANDANASSOCIATIVEARRAYATTHESAMETIMETHEJAVA2CONTAINERLIBRARYSTRIKESABALANCETHEFULLFUNCTIONALITYTHATYOUEXPECTFROMAMATURECONTAINERLIBRARY,BUTEASIERTOLEARNANDUSETHANTHECCONTAINERCLASSESANDOTHERSIMILARCONTAINERLIBRARIESTHERESULTCANSEEMABITODDINPLACESUNLIKESOMEOFTHEDECISIONSMADEINTHEEARLYJAVALIBRARIES,THESEODDITIESWERENOTACCIDENTS,BUTCAREFULLYCONSIDEREDDECISIONSBASEDONTRADEOFFSINCOMPLEXITYITMIGHTTAKEYOUALITTLEWHILETOGETCOMFORTABLEWITHSOMEASPECTSOFTHELIBRARY,BUTITHINKYOULLFINDYOURSELFRAPIDLYACQUIRINGANDUSINGTHESENEWTOOLSASMENTIONEDBEFORE,THEREARETWOBASICCATEGORIESINTHEJAVACONTAINERLIBRARYTHEDISTINCTIONISBASEDONTHENUMBEROFITEMSTHATAREHELDINEACHLOCATIONOFTHECONTAINERTHECOLLECTIONCATEGORYONLYHOLDSONEITEMINEACHLOCATIONTHENAMEISABITMISLEADINGSINCEENTIRECONTAINERLIBRARIESAREOFTENCALLED“COLLECTIONS”ITINCLUDESTHELIST,WHICHHOLDSAGROUPOFITEMSINASPECIFIEDSEQUENCE,ANDTHESET,WHICHONLYALLOWSTHEADDITIONOFONEITEMOFEACHTYPETHEARRAYLISTISATYPEOFLIST,ANDHASHSETISATYPEOFSETTOADDITEMSTOANYCOLLECTION,THERESANADDMETHODTHEMAPHOLDSKEYVALUEPAIRS,RATHERLIKEAMINIDATABASETHEABOVEPROGRAMUSESONEFLAVOROFMAP,THEHASHMAPIFYOUHAVEAMAPTHATASSOCIATESSTATESWITHTHEIRCAPITALSANDYOUWANTTOKNOWTHECAPITALOFOHIO,YOULOOKITUPALMOSTASIFYOUWEREINDEXINGINTOANARRAYMAPSAREALSOCALLEDASSOCIATIVEARRAYSTOADDELEMENTSTOAMAPTHERESAPUTMETHODTHATTAKESAKEYANDAVALUEASARGUMENTSTHEABOVEEXAMPLEONLYSHOWSADDINGELEMENTSANDDOESNOTLOOKTHEELEMENTSUPAFTERTHEYREADDEDTHATWILLBESHOWNLATERTHEOVERLOADEDFILLMETHODSFILLCOLLECTIONSANDMAPS,RESPECTIVELYIFYOULOOKATTHEOUTPUT,YOUCANSEETHATTHEDEFAULTPRINTINGBEHAVIORPROVIDEDVIATHECONTAINERSVARIOUSTOSTRINGMETHODSPRODUCESQUITEREADABLERESULTS,SONOADDITIONALPRINTINGSUPPORTISNECESSARYASITWASWITHARRAYSACOLLECTIONISPRINTEDSURROUNDEDBYSQUAREBRACES,WITHEACHELEMENTSEPARATEDBYACOMMAAMAPISSURROUNDEDBYCURLYBRACES,WITHEACHKEYANDVALUEASSOCIATEDWITHANEQUALSIGNKEYSONTHELEFT,VALUESONTHERIGHTYOUCANALSOIMMEDIATELYSEETHEBASICBEHAVIOROFTHEDIFFERENTCONTAINERSTHELISTHOLDSTHEOBJECTSEXACTLYASTHEYAREENTERED,WITHOUTANYREORDERINGOREDITINGTHESET,HOWEVER,ONLYACCEPTSONEOFEACHOBJECTANDITUSESITSOWNINTERNALORDERINGMETHODINGENERAL,YOUAREONLYCONCERNEDWITHWHETHERORNOTSOMETHINGISAMEMBEROFTHESET,NOTTHEORDERINWHICHITAPPEARSFORTHATYOUDUSEALISTANDTHEMAPALSOONLYACCEPTSONEOFEACHTYPEOFITEM,BASEDONTHEKEY,ANDITALSOHASITSOWNINTERNALORDERINGANDDOESNOTCAREABOUTTHEORDERINWHICHYOUENTERTHEITEMSIFMAINTAININGTHEINSERTIONSEQUENCEISIMPORTANT,YOUCANUSEALINKEDHASHSETORLINKEDHASHMAPSUMMARYANARRAYASSOCIATESNUMERICALINDICESTOOBJECTSITHOLDSOBJECTSOFAKNOWNTYPESOTHATYOUDONTHAVETOCASTTHERESULTWHENYOURELOOKINGUPANOBJECTITCANBEMULTIDIMENSIONAL,ANDITCANHOLDPRIMITIVESHOWEVER,ITSSIZECANNOTBECHANGEDONCEYOUCREATEITACOLLECTIONHOLDSSINGLEELEMENTS,WHILEAMAPHOLDSASSOCIATEDPAIRSLIKEANARRAY,ALISTALSOASSOCIATESNUMERICALINDICESTOOBJECTSYOUCANTHINKOFARRAYSANDLISTSASORDEREDCONTAINERSTHELISTAUTOMATICALLYRESIZESITSELFASYOUADDMOREELEMENTSBUTALISTCANHOLDONLYOBJECTREFERENCES,SOITWONTHOLDPRIMITIVESANDYOUMUSTALWAYSCASTTHERESULTWHENYOUPULLANOBJECTREFERENCEOUTOFACONTAINERUSEANARRAYLISTIFYOUREDOINGALOTOFRANDOMACCESSES,ANDALINKEDLISTIFYOUWILLBEDOINGALOTOFINSERTIONSANDREMOVALSINTHEMIDDLEOFTHELISTTHEBEHAVIOROFQUEUES,DEQUES,ANDSTACKSISPROVIDEDVIATHELINKEDLISTAMAPISAWAYTOASSOCIATENOTNUMBERS,BUTOBJECTSWITHOTHEROBJECTSTHEDESIGNOFAHASHMAPISFOCUSEDONRAPIDACCESS,WHILEATREEMAPKEEPSITSKEYSINSORTEDORDER,ANDTHUSISNOTASFASTASAHASHMAPALINKEDHASHMAPKEEPSITSELEMENTSININSERTIONORDER,BUTMAYALSOREORDERTHEMWITHITSLRUALGORITHMASETONLYACCEPTSONEOFEACHTYPEOFOBJECTHASHSETSPROVIDEMAXIMALLYFASTLOOKUPS,WHILETREESETSKEEPTHEELEMENTSINSORTEDORDERLINKEDHASHSETSKEEPELEMENTSININSERTIONORDERTHERESNONEEDTOUSETHELEGACYCLASSESVECTOR,HASHTABLEANDSTACKINNEWCODEHIGHLEVELPROGRAMMINGLANGUAGEJAVACOLLECTIONSOFOBJECTS高級(jí)編程語(yǔ)言JAVA之集合與對(duì)象如果程序只包含固定數(shù)量的對(duì)象,并且其生命周期都已知,那么這個(gè)程序就實(shí)在太簡(jiǎn)單了。通常,你的程序會(huì)根據(jù)運(yùn)行時(shí)才知道的條件創(chuàng)建新對(duì)象。不到運(yùn)行期,不會(huì)知道所需對(duì)象的數(shù)量,甚至不知道確切的類(lèi)型。為解決這個(gè)普遍的編程問(wèn)題,需要能夠在任意時(shí)刻,任意位置,創(chuàng)建任意數(shù)量的對(duì)象。所以,你就不能指望創(chuàng)建具名的引用來(lái)持有每一個(gè)對(duì)象MYOBJECTMYREFERENCE;因?yàn)槟悴恢缹?shí)際上會(huì)需要多少這樣的引用。大多數(shù)語(yǔ)言都提供了某種方法來(lái)解決這個(gè)基本問(wèn)題。JAVA有多種方式保存對(duì)象(應(yīng)該說(shuō)是對(duì)象的引用REFERENCE)。例如前面曾經(jīng)學(xué)習(xí)過(guò)的數(shù)組,它是語(yǔ)言?xún)?nèi)置的類(lèi)型。JAVA實(shí)用類(lèi)庫(kù)還提供了一套相當(dāng)完整的容器類(lèi)(也稱(chēng)為集合類(lèi),但由于JAVA2的類(lèi)庫(kù)中使用了COLLECTION來(lái)指代該類(lèi)庫(kù)的一個(gè)特殊子集,所以我使用“容器”稱(chēng)呼它們)。容器提供了近乎完美的方式來(lái)保存和操縱對(duì)象。數(shù)組這里的主題是持有對(duì)象,而數(shù)組正是保存對(duì)象的方式之一。不過(guò)持有對(duì)象還有許多別的方式,那么數(shù)組在其中有什么特別之處呢?cái)?shù)組與其它種類(lèi)的容器之間的區(qū)別有三方面效率、類(lèi)型和持有基本類(lèi)型的能力。在JAVA中,數(shù)組是一種效率最高的存儲(chǔ)和隨機(jī)訪(fǎng)問(wèn)對(duì)象引用序列的方式。數(shù)組就是個(gè)簡(jiǎn)單的線(xiàn)性序列,這使得元素訪(fǎng)問(wèn)非??焖伲矒p失了其他一些特性。當(dāng)你創(chuàng)建了一個(gè)數(shù)組對(duì)象(將數(shù)組本身作為對(duì)象看待),數(shù)組的大小就被固定了,并且這個(gè)數(shù)組的生命周期也是不可改變的。通常是創(chuàng)建一個(gè)特定大小的數(shù)組,在空間不足的時(shí)候再創(chuàng)建一個(gè)新的數(shù)組,然后把舊數(shù)組中所有的引用移到新數(shù)組中。這正是后面會(huì)學(xué)到的ARRAYLIST類(lèi)的行為方式。然而這種彈性帶來(lái)的開(kāi)銷(xiāo),使得ARRAYLIST比數(shù)組效率低。在C中,容器類(lèi)VECTOR知道自己保存的對(duì)象是何類(lèi)型,不過(guò)與JAVA中的數(shù)組相比,它有一個(gè)缺點(diǎn)C中VECTOR的操作符不做邊界檢查,所以你可能會(huì)越界操作。1而在JAVA中,無(wú)論你使用數(shù)組或容器,都有邊界檢查。如果越界操作就會(huì)得到一個(gè)RUNTIMEEXCEPTION異常。這類(lèi)異常通常說(shuō)明是程序員的錯(cuò)誤,因此你不必自己作越界檢查。多說(shuō)一句,為了速度,C的VECTOR存取訪(fǎng)問(wèn)不作邊界檢查;而JAVA的數(shù)組與容器會(huì)因?yàn)闀r(shí)刻存在的邊界檢查帶來(lái)固定的性能開(kāi)銷(xiāo)。其它通用的容器類(lèi)LIST,SET和MAP,它們不以具體的類(lèi)型來(lái)處理對(duì)象。換句話(huà)說(shuō),它們將所有對(duì)象都按OBJECT類(lèi)型處理,即JAVA中所有類(lèi)的基類(lèi)。從某個(gè)角度來(lái)說(shuō),這種方式很好你只需要做一個(gè)容器,任意的JAVA對(duì)象都可以放入其中。(除了基本類(lèi)型,可以使用JAVA包裝類(lèi)將其作為常量包裝后存入容器,或者用你自己的類(lèi)將其作為變量包裝起來(lái)存入容器)這正是數(shù)組比通用容器優(yōu)越的第二點(diǎn)當(dāng)你創(chuàng)建一個(gè)數(shù)組時(shí),它只能保存特定類(lèi)型的數(shù)據(jù)(這與第三點(diǎn)相關(guān)數(shù)組可以保存基本類(lèi)型,容器則不能)。這意味著會(huì)在編譯期做類(lèi)型檢查,以防止你將錯(cuò)誤的類(lèi)型插入數(shù)組,或取出數(shù)據(jù)時(shí)弄錯(cuò)類(lèi)型。當(dāng)然,無(wú)論在編譯期還是運(yùn)行期,JAVA都會(huì)阻止你向?qū)ο蟀l(fā)送不恰當(dāng)?shù)南ⅰK圆⒉皇钦f(shuō)哪種方法更不安全,只是如果編譯期就能夠指出錯(cuò)誤,那么程序可以運(yùn)行得更快,也減少了程序的使用者被異常嚇著的可能性??紤]到效率與類(lèi)型檢查,應(yīng)該盡可能使用數(shù)組。然而,如果要解決更一般化的問(wèn)題,數(shù)組就太受限制了。ARRAYS類(lèi)在JAVAUTIL類(lèi)庫(kù)中可以找到ARRAYS類(lèi),它有一套STATIC方法,提供操作數(shù)組的實(shí)用功能。其中有四個(gè)基本方法EQUALS,比較兩個(gè)數(shù)組是否相等;FILL,用某個(gè)值填充整個(gè)數(shù)組;SORT,對(duì)數(shù)組排序;還有BINARYSEARCH,在已經(jīng)排序的數(shù)組中查找元素。所有這些方法都被各種基本類(lèi)型和OBJECT類(lèi)重載過(guò)。此外,方法ASLIST接受任意的數(shù)組為參數(shù),并將其轉(zhuǎn)變?yōu)長(zhǎng)IST容器。ARRAYS類(lèi)雖然很有用,但是它卻仍然不具備完備的功能。例如,如果能夠很容易地打印數(shù)組的所有元素,而不需要每次都需要自己去編寫(xiě)FOR循環(huán)的代碼,那就太好了。而且你會(huì)看到,方法FILL只能以某個(gè)單一的值填充整個(gè)數(shù)組,如果你想用隨機(jī)生成的若干數(shù)字填充數(shù)組,F(xiàn)ILL就無(wú)能為力了。所以為ARRAYS類(lèi)添加這樣一些實(shí)用功能會(huì)很有幫助,我將它們打包放入COMBRUCEECKELUTIL包中,以便于使用。利用它們可以打印任意類(lèi)型的數(shù)組,以不同的值或?qū)ο筇畛鋽?shù)組,這些對(duì)象由你定義的“生成器(GENERATOR)”對(duì)象創(chuàng)建。容器簡(jiǎn)介就我而言,容器類(lèi)對(duì)于新的開(kāi)發(fā)者是最強(qiáng)大的工具之一,可以大幅提高編程能力。由于JAVA10和11中容器的可憐表現(xiàn),在JAVA2中,所有的容器都經(jīng)過(guò)重新設(shè)計(jì)。某些容器改變不大,但多數(shù)容器完全改變了。提供了類(lèi)似鏈表(LINKEDLIST),隊(duì)列(QUEUE)和雙向隊(duì)列(DEQUE,發(fā)音同“DECKS”)的行為,豐富了容器類(lèi)庫(kù)的功能。設(shè)計(jì)容器類(lèi)庫(kù)是很困難的事(多數(shù)類(lèi)庫(kù)的設(shè)計(jì)也都如此)。在C中,容器類(lèi)是用許多不同的類(lèi)組成了基礎(chǔ),這好過(guò)C早期根本沒(méi)有容器類(lèi),但是JAVA并不是這樣的。我還見(jiàn)過(guò)的另一種極端情況是,整個(gè)容器類(lèi)類(lèi)庫(kù)只有一個(gè)類(lèi),“CONTAINER”,其行為既像是線(xiàn)性序列(LINEARSEQUENCE),又像是關(guān)聯(lián)數(shù)組(ASSOCIATIVEARRAY)。JAVA2的容器類(lèi)類(lèi)庫(kù)強(qiáng)調(diào)平衡成熟的容器類(lèi)類(lèi)庫(kù)應(yīng)具備你所期望得到的完整功能,但比C的容器和其他類(lèi)似的容器更易于學(xué)習(xí)與使用。于是其結(jié)果看起來(lái)就有點(diǎn)奇怪。這與早期JAVA類(lèi)庫(kù)的某些決策不同,這種奇怪并不是偶然的,而是權(quán)衡復(fù)雜性,經(jīng)過(guò)深思熟慮做
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年大學(xué)計(jì)算機(jī)與網(wǎng)絡(luò)技術(shù)(網(wǎng)絡(luò)趨勢(shì)分析)試題及答案
- 2025年中職(建筑施工)建筑腳手架搭設(shè)試題及答案
- 2025年大學(xué)大一(社會(huì)學(xué)概論)社會(huì)流動(dòng)試題及解析
- 2025年中職直播管理應(yīng)用(應(yīng)用技術(shù))試題及答案
- 2025年大學(xué)大一(心理學(xué))普通心理學(xué)基礎(chǔ)試題及答案
- 2025年大學(xué)大三(金融學(xué))國(guó)際金融試題及答案
- 2025年大學(xué)大三(建筑學(xué))建筑歷史基礎(chǔ)試題及解析
- 2025年大學(xué)運(yùn)動(dòng)解剖學(xué)(內(nèi)分泌系統(tǒng))試題及答案
- 2025年大學(xué)大一(倫理學(xué))倫理學(xué)基礎(chǔ)試題及解析
- 2025年大學(xué)茶藝與茶營(yíng)銷(xiāo)(茶店經(jīng)營(yíng)管理)試題及答案
- DL∕T 593-2016 高壓開(kāi)關(guān)設(shè)備和控制設(shè)備標(biāo)準(zhǔn)的共用技術(shù)要求
- 四川大學(xué)附屬中學(xué)新城分校高中教師招聘考試試題及答案
- 五斗櫥的制造 五斗櫥的制作
- 公司境外股權(quán)投資管理辦法
- 建筑施工預(yù)算評(píng)審報(bào)告
- 國(guó)際漢語(yǔ)教師求職簡(jiǎn)歷
- 個(gè)人營(yíng)業(yè)執(zhí)照注銷(xiāo)委托書(shū)范文
- 產(chǎn)品外協(xié)加工作業(yè)流程
- 工程力學(xué)試題和答案解析匯總
- GB/T 4677-2002印制板測(cè)試方法
- GB/T 12464-2016普通木箱
評(píng)論
0/150
提交評(píng)論