精品一区二区中文在线,无遮挡h肉动漫在线观看,国产99视频精品免视看9,成全免费高清大全

java框架

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

java集合框架

JAVA集合框架

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

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

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

集合論是現代數學中重要的基礎理論。它的概念和方法已經滲透到代數、拓撲和分析等許多數學分支以及物理學和質點力學等一些自然科學部門,為這些學科提供了奠基的方法,改變了這些學科的面貌。計算機科學作為一門現代科學因其與數學的緣源,自然其中的許多概念也來自數學,集合是其中之一。如果說集合論的產生給數學注入了新的生機與活力,那么計算機科學中的集合概念給程序員的生活也注入了新的生機與活力。

集合

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

集合框架

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

數組與容器

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

返回數組

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

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

【java框架】相關文章:

什么是JAVA04-26

企業合作框架03-09

java編碼規范04-29

java實習總結01-01

我的Java路04-30

Java實習總結05-27

java實習心得01-07

java培訓心得05-06

java實習報告02-15

合作管理研究框架04-27