程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java集合學習總結

java集合學習總結

編輯:關於JAVA

下面復習一下由標准Java(1.0和1.1)庫提供的集合(BitSet未包括在這裡,因為它更象一種負有特殊使命的類):
(1) 數組包含了對象的數字化索引。它容納的是一種已知類型的對象,所以在查找一個對象時,不必對結果進行造型處理。數組可以是多維的,而且能夠容納基本數據類型。但是,一旦把它創建好以後,大小便不能變化了。
(2) Vector(矢量)也包含了對象的數字索引——可將數組和Vector想象成隨機訪問集合。當我們加入更多的元素時,Vector能夠自動改變自身的大小。但Vector只能容納對象的句柄,所以它不可包含基本數據類型;而且將一個對象句柄從集合中取出來的時候,必須對結果進行造型處理。
(3) Hashtable(散列表)屬於Dictionary(字典)的一種類型,是一種將對象(而不是數字)同其他對象關聯到一起的方式。散列表也支持對對象的隨機訪問,事實上,它的整個設計方案都在突出訪問的“高速度”。
(4) Stack(堆棧)是一種“後入先出”(LIFO)的隊列。

若你曾經熟悉數據結構,可能會疑惑為何沒看到一套更大的集合。從功能的角度出發,你真的需要一套更大的集合嗎?對於Hashtable,可將任何東西置入其中,並以非常快的速度檢索;對於Enumeration(枚舉),可遍歷一個序列,並對其中的每個元素都采取一個特定的操作。那是一種功能足夠強勁的工具。
但Hashtable沒有“順序”的概念。Vector和數組為我們提供了一種線性順序,但若要把一個元素插入它們任何一個的中部,一般都要付出“慘重”的代價。除此以外,隊列、拆散隊列、優先級隊列以及樹都涉及到元素的“排序”——並非僅僅將它們置入,以便以後能按線性順序查找或移動它們。這些數據結構也非常有用,這也正是標准C++中包含了它們的原因。考慮到這個原因,只應將標准Java庫的集合看作自己的一個起點。而且倘若必須使用Java 1.0或1.1,則可在需要超越它們的時候使用JGL。
如果能使用Java 1.2,那麼只使用新集合即可,它一般能滿足我們的所有需要。注意本書在Java 1.1身上花了大量篇幅,所以書中用到的大量集合都是只能在Java1.1中用到的那些:Vector和Hashtable。就目前來看,這是一個不得以而為之的做法。但是,這樣處理亦可提供與老Java代碼更出色的向後兼容能力。若要用Java1.2寫新代碼,新的集合往往能更好地為你服務。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved