亚洲一区亚洲二区亚洲三区,国产成人高清在线,久久久精品成人免费看,999久久久免费精品国产牛牛,青草视频在线观看完整版,狠狠夜色午夜久久综合热91,日韩精品视频在线免费观看

java框架

時間:2023-04-29 15:31:46 全科知識 我要投稿
  • 相關(guān)推薦

java集合框架

JAVA集合框架

JAVA集合框架(JAVA集合框架)

Java,是由Sun Microsystems公司于1995年5月推出的Java程序設(shè)計語言和Java平臺的總稱。用Java實現(xiàn)的HotJava瀏覽器(支持Java applet)顯示了Java的魅力:跨平臺、動態(tài)的Web、Internet計算。從此,Java被廣泛接受并推動了Web的迅速發(fā)展,常用的瀏覽器現(xiàn)在均支持Java applet。集合框架是為表示和操作集合而規(guī)定的一種統(tǒng)一的標(biāo)準(zhǔn)的體系結(jié)構(gòu)。任何集合框架都包含三大塊內(nèi)容:對外的接口、接口的實現(xiàn)和對集合運(yùn)算的算法。

目錄 集合論引 數(shù)組與容器 返回數(shù)組 類 收縮展開 集合論引

集合論是現(xiàn)代數(shù)學(xué)中重要的基礎(chǔ)理論。它的概念和方法已經(jīng)滲透到代數(shù)、拓?fù)浜头治龅仍S多數(shù)學(xué)分支以及物理學(xué)和質(zhì)點(diǎn)力學(xué)等一些自然科學(xué)部門,為這些學(xué)科提供了奠基的方法,改變了這些學(xué)科的面貌。計算機(jī)科學(xué)作為一門現(xiàn)代科學(xué)因其與數(shù)學(xué)的緣源,自然其中的許多概念也來自數(shù)學(xué),集合是其中之一。如果說集合論的產(chǎn)生給數(shù)學(xué)注入了新的生機(jī)與活力,那么計算機(jī)科學(xué)中的集合概念給程序員的生活也注入了新的生機(jī)與活力。

集合

很難給集合下一個精確的定義,通常情況下,把具有相同性質(zhì)的一類東西,匯聚成一個整體,就可以稱為集合。比如,用Java編程的所有程序員,全體中國人等。通常集合有兩種表示法,一種是列舉法,比如集合A={1,2,3,4},另一種是性質(zhì)描述法,比如集合B={X|0<X<100且X屬于整數(shù)}。集合論的奠基人康托爾在創(chuàng)建集合理論給出了許多公理和性質(zhì),這都成為后來集合在其它領(lǐng)域應(yīng)用的基礎(chǔ),本文并不是講述集合論的,所以如果你對集合論感興趣,可以參考相關(guān)書籍。

集合框架

那么有了集合的概念,什么是集合框架呢?集合框架是為表示和操作集合而規(guī)定的一種統(tǒng)一的標(biāo)準(zhǔn)的體系結(jié)構(gòu)。任何集合框架都包含三大塊內(nèi)容:對外的接口、接口的實現(xiàn)和對集合運(yùn)算的算法。 接口:即表示集合的抽象數(shù)據(jù)類型。接口提供了讓我們對集合中所表示的內(nèi)容進(jìn)行單獨(dú)操作的可能。 實現(xiàn):也就是集合框架中接口的具體實現(xiàn)。實際它們就是那些可復(fù)用的數(shù)據(jù)結(jié)構(gòu)。 算法:在一個實現(xiàn)了某個集合框架中的接口的對象身上完成某種有用的計算的方法,例如查找、排序等。這些算法通常是多態(tài)的,因為相同的方法可以在同一個接口被多個類實現(xiàn)時有不同的表現(xiàn)。事實上,算法是可復(fù)用的函數(shù)。如果你學(xué)過C++,那C++中的標(biāo)準(zhǔn)模版庫(STL)你應(yīng)該不陌生,它是眾所周知的集合框架的絕好例子。

數(shù)組與容器

數(shù)組與其它容器的區(qū)別體現(xiàn)在三個方面:效率,類型識別以及可以持有primitives。數(shù)組是Java提供的,能隨機(jī)存儲和訪問reference序列的諸多方法中的,最高效的一種。數(shù)組是一個簡單的線性序列,所以它可以快速的訪問其中的元素。但是速度是有代價的;當(dāng)你創(chuàng)建了一個數(shù)組之后,它的容量就固定了,而且在其生命周期里不能改變。也許你會提議先創(chuàng)建一個數(shù)組,等到快不夠用的時候,再創(chuàng)建一個新的,然后將舊的數(shù)組里的reference全部導(dǎo)到新的里面。其實(我們以后會講的)ArrayList就是這么做的。但是這種靈活性所帶來的開銷,使得ArrayList的效率比起數(shù)組有了明顯下降。 Java對數(shù)組和容器都做邊界檢查;如果過了界,它就會給一個RuntimeException。這種異常表明這個錯誤是由程序員造成的`,這樣你就用不著再在程序里面檢查了。 還有一些泛型容器類包括List,Set和Map。他們處理對象的時候就好像這些對象都沒有自己的具體類型一樣。也就是說,容器將它所含的元素都看成是(Java中所有類的根類)Object的。這樣你只需要建一種容器,就能把所有類型的對象全都放進(jìn)去。從這個角度來看,這種作法很不錯(只是苦了primitive。如果是常量,你還可以用Java的primitive的Wrapper類;如果是變量,那就只能放在你自己的類里了)。與其他泛型容器相比,這里體現(xiàn)數(shù)組的第二個優(yōu)勢:創(chuàng)建數(shù)組的時候,你也同時指明了它所持有的對象的類型(這又引出了第三點(diǎn)--數(shù)組可以持有primitives,而容器卻不行)。也就是說,它會在編譯的時候作類型檢查,從而防止你插入錯誤類型的對象,或者是在提取對象的時候把對象的類型給搞錯了。Java在編譯和運(yùn)行時都能阻止你將一個不恰當(dāng)?shù)南鹘o對象。所有這并不是說使用容器就有什么危險,只是如果編譯器能夠幫你指定,那么程序運(yùn)行會更快,最終用戶也會較少收到程序運(yùn)行異常的騷擾。 從效率和類型檢查的角度來看,使用數(shù)組總是沒錯的。但是,如果你在解決一個更為一般的問題,那數(shù)組就會顯得功能太弱了點(diǎn)。 不管你用的是那種類型的數(shù)組,數(shù)組的標(biāo)識符實際上都是一個“創(chuàng)建在堆(heap)里的實實在在的對象的”reference。實際上是那個對象持有其他對象的reference。你即可以用數(shù)組的初始化語句,隱含地創(chuàng)建這個對象,也可以用new表達(dá)式,明確地創(chuàng)建這個對象,只讀的length屬性能告訴你數(shù)組能存儲多少元素。它是數(shù)組對象的一部分(實際上也是你唯一能訪問的屬性或方法)。‘[]’語法是另一條訪問數(shù)組對象的途徑。 你沒法知道數(shù)組里面究竟放了多少元素,因為length只是告訴你數(shù)組能放多少元素,也就是說是數(shù)組對象的容量,而不是它真正已經(jīng)持有的元素的數(shù)量。但是,創(chuàng)建數(shù)組對象的時候,它所持有的reference都會被自動地初始化為null,所以你可以通過檢查數(shù)組的某個“槽位”是否為null,來判斷它是否持有對象。以此類推,primitive的數(shù)組,會自動來數(shù)字初始化為零,字符初始化為(char)0,boolean初始化為false。 容器類只能持有Object對象的reference。而數(shù)組除了能持有Objects的reference之外,還可以直接持有primitive。當(dāng)然可以使用諸如Integer,Double之類的wrapper類。把primitive的值放到容器中,但這樣總有點(diǎn)怪怪的。此外,primitive數(shù)組的效率要比wrapper類容器的高出許多。 當(dāng)然,如果你使用primitive的時候,還需要那種“能隨需要自動擴(kuò)展的”容器類的靈活性,那就不能用數(shù)組了。你只能用容器來存儲primitive的wrapper類。

返回數(shù)組

假設(shè)你寫了一個方法,它返回的不是一個而是一組東西。那么在Java中就可以返回的“就是一個數(shù)組”。與C++不同,你永遠(yuǎn)也不必為Java的數(shù)組操心--只要你還需要它,它就還在;一旦你用完了,垃圾回收器會幫你把它打掃干凈。

java.util里面有一個Arrays類,它包括了一組可用于數(shù)組的static方法,這些方法都是一些實用工具。其中有四個基本方法:用來比較兩個數(shù)組是否相等的equals();用來填充的fill();用來對數(shù)組進(jìn)行排序的sort();以及用于在一個已排序的數(shù)組中查找元素的binarySearch()。所有這些方法都對primitive和Object進(jìn)行了重載。此外還有一個asList()方法,它接受一個數(shù)組,然后把它轉(zhuǎn)成一個List容器。 雖然Arrays還是有用的,但它的功能并不完整。舉例來說,如果它能讓我們不用寫for循環(huán)就能直接打印數(shù)組,那就好了。此外,正如你所看到的fill()只能用一個值填數(shù)組。所以,如果你想把隨機(jī)生成的數(shù)字填進(jìn)數(shù)組的話,fill()是無能為力的。

【java框架】相關(guān)文章:

什么是JAVA04-26

企業(yè)合作框架03-09

java編碼規(guī)范04-29

java實習(xí)總結(jié)01-01

我的Java路04-30

Java實習(xí)總結(jié)05-27

java實習(xí)心得01-07

java培訓(xùn)心得05-06

java實習(xí)報告02-15

合作管理研究框架04-27