国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

J2SE綜合:對java.util的總結 七

2019-11-18 11:54:25
字體:
來源:轉載
供稿:網友

  15.10 從以前版本遺留下來的類和接口
  
  正如本章開始時介紹的那樣,java.util的最初版本中不包括類集框架。取而代之,它定義了幾個類和接口提供專門的方法用于存儲對象。隨著在Java 2中引入類集,有幾種最初的類被重新設計成支持類集接口。因此它們與框架完全兼容。盡管實際上沒有類被擯棄,但其中某些仍被認為是過時的。當然,在那些重復從以前版本遺留下來的類的功能性的地方,通常都愿意用類集編寫新的代碼程序。一般地,對從以前版本遺留下來的類的支持是因為仍然存在大量使用它們的基本代碼。包括現在仍在被Java 2的應用編程接口(API)使用的程序。
  
  另一點,沒有一個類集類是同步的。但是所有的從以前版本遺留下來的類都是同步的。這一區別在有些情況下是很重要的。當然,通過使用由Collections提供的算法也很輕易實現類集同步。
  
  由java.util定義的從以前版本遺留下來的類說明如下:
  
  Dictionary Hashtable PRoperties Stack Vector
  
  有一個枚舉(Enumeration)接口是從以前版本遺留下來。在下面依次介紹Enumeration和每一種從以前版本遺留下來的類。
  
  15.10.1 Enumeration接口
  
  Enumeration接口定義了可以對一個對象的類集中的元素進行枚舉(一次獲得一個)的方法。這個接口盡管沒有被擯棄,但已經被Iterator所替代。Enumeration對新程序來說是過時的。然而它仍被幾種從以前版本遺留下來的類(例如Vector和Properties)所定義的方法使用,被幾種其他的API類所使用以及被目前廣泛使用的應用程序所使用。
  
  Enumeration指定下面的兩個方法:
  
  boolean hasMoreElements( )
  
  Object nextElement( )
  
  執行后,當仍有更多的元素可提取時,hasMoreElements( )方法一定返回true.當所有元素都被枚舉了,則返回false.nextElement( )方法將枚舉中的下一個對象做為一個類屬Object的引用而返回。也就是每次調用nextElement( )方法獲得枚舉中的下一個對象。調用例程必須將那個對象置為包含在枚舉內的對象類型。
  
  15.10.2 Vector
  
  Vector實現動態數組。這與ArrayList相似,但兩者不同的是:Vector是同步的,并且它包含了許多不屬于類集框架的從以前版本遺留下來的方法。隨著Java 2的公布,Vector被重新設計來擴展AbstractList和實現List接口,因此現在它與類集是完全兼容的。這里是Vector的構造函數:
  
  Vector( )
  
  Vector(int size)
  
  Vector(int size, int incr)
  
  Vector(Collection c)
  
  第一種形式創建一個原始大小為10的默認矢量。第二種形式創建一個其原始容量由size指定的矢量。第三種形式創建一個其原始容量由size指定,并且它的增量由incr指定的矢量。增量指定了矢量每次答應向上改變大小的元素的個數。第四種形式創建一個包含了類集c中元素的矢量。這個構造函數是在Java 2中新增加的。
  
  所有的矢量開始都有一個原始的容量。在這個原始容量達到以后,下一次再試圖向矢量中存儲對象時,矢量自動為那個對象分配空間同時為別的對象增加額外的空間。通過分配超過需要的內存,矢量減小了可能產生的分配的次數。這種次數的減少是很重要的,因為分配內存是很花時間的。在每次再分配中,分配的額外空間的總數由在創建矢量時指定的增量來確定。假如沒有指定增量,在每個分配周期,矢量的大小增一倍。
  
  Vector定義了下面的保護數據成員:
  
  int capacityIncrement;
  
  int elementCount;
  
  Object elementData[ ];
  
  增量值被存儲在capacityIncrement中。矢量中的當前元素的個數被存儲在elementCount中。保存矢量的數組被存儲在elementData中。
  
  除了由List定義的類集方法之外,Vector還定義了幾個從以前版本遺留下來的方法,這些方法列在表15-10中。
  
  表15-10 由Vector 定義的方法
  
  方法描述
  
  final void addElement(Object element) 將由element指定的對象加入矢量int capacity( ) 返回矢量的容量
  
  Object clone( ) 返回調用矢量的一個拷貝Boolean contains(Object element) 假如element被包含在矢量中,則返回true;假如不包含于其中,則返回falsevoid copyInto(Object array[ ]) 將包含在調用矢量中的元素復制到由array指定的數組中Object elementAt(int index) 返回由index指定位置的元素Enumeration elements( ) 返回矢量中元素的一個枚舉Object firstElement( ) 返回矢量的第一個元素int indexOf(Object element) 返回element首次出現的位置下標。假如對象不在矢量中,則返回-1
  
  int indexOf(Object element, int start) 返回element在矢量中在start及其之后第一次出現的位置下標。假如該對象不屬于矢量的這一部分,則返回-1
  
  void insertElementAt(Object element,int index)在矢量中,在由index指定的位置處加入elementboolean isEmpty( ) 假如矢量是空的,則返回true.假如它包含了一個或更多個元素,則返回false
  
  Object lastElement( ) 返回矢量中的最后一個元素int lastIndexOf(Object element) 返回element在矢量中最后一次出現的位置下標。假如對象不包含在矢量中,則返回-1
  
  int lastIndexOf(Object element,int start) 返回element在矢量中,在start之前最后一次出現的位置下標。假如該對象不屬于矢量的這一部分,則返回-1
  
  void removeAllElements( ) 清空矢量,在這個方法執行以后,矢量的大小為0boolean removeElement(Object element) 從矢量中刪除element.對于指定的對象,矢量中假如有其多個實例,則其中第一個實例被刪除。假如成功刪除,則返回true;假如沒有發現對象,則返回falsevoid removeElementAt(int index) 刪除由index指定位置處的元素void setElementAt(Object element,int index)將由index指定的位置分配給elementvoid setSize(int size) 將矢量中元素的個數設為size.假如新的長度小于老的長度,元素將丟失;假如新的長度大于老的長度,則在其后增加null元素int size( ) 返回矢量中當前元素的個數
  
  續表
  
  方法描述
  
  String toString( ) 返回矢量的字符串等價形式void trimToSize( ) 將矢量的容量設為與其當前擁有的元素的個數相等因為Vector實現List,所以可以像使用ArrayList的一個實例那樣使用矢量。也可以使用它的從以前版本遺留下來的方法來操作它。例如,在后面實例化Vector,可以通過調用addElement( )方法而為其增加一個元素。調用elementAt( )方法可以獲得指定位置處的元素。調用firstElement( )方法可以得到矢量的第一個元素。調用lastElement( )方法可以檢索到矢量的最后一個元素。使用indexOf( ) 和lastIndexOf( ) 方法可以獲得元素的下標。調用removeElement( )或removeElementAt( )方法可以刪除元素。
  
  下面的程序使用矢量存儲不同類型的數值對象。程序說明了幾種由Vector定義的從以前版本遺留下來的方法,同時它也說明了枚舉(Enumeration)接口。
  
  // Demonstrate various Vector Operations.
  
  import java.util.*;
  
  class VectorDemo {
  
  public static void main(String args[]) {
  
  // initial size is 3, increment is 2
  
  Vector v = new Vector(3, 2);
  
  System.out.println("Initial size: " + v.size());
  
  System.out.println("Initial capacity: " +
  
  v.capacity());
  
  v.addElement(new Integer(1));
  
  v.addElement(new Integer(2));
  
  v.addElement(new Integer(3));
  
  v.addElement(new Integer(4));
  
  System.out.println("Capacity after four additions: " +
  
  v.capacity());
  
  v.addElement(new Double(5.45));
  
  System.out.println("Current capacity: " +
  
  v.capacity());
  
  v.addElement(new Double(6.08));
  
  v.addElement(new Integer(7));
  
  System.out.println("Current capacity: " +
  
  v.capacity());
  
  v.addElement(new Float(9.4));
  
  v.addElement(new Integer(10));
  
  System.out.println("Current capacity: " +
  
  v.capacity());
  
  v.addElement(new Integer(11));
  
  v.addElement(new Integer(12));
  
  System.out.println("First element: " +
  
  (Integer)v.firstElement());
  
  System.out.println("Last element: " +
  
  (Integer)v.lastElement());
  
  if(v.contains(new Integer(3)))
  
  System.out.println("Vector contains 3.");
  
  // enumerate the elements in the vector.
  
  Enumeration vEnum = v.elements();
  
  System.out.println("/nElements in vector:");
  
  while(vEnum.hasMoreElements())
  
  System.out.print(vEnum.nextElement() + " ");
  
  System.out.println();
  
  }
  
  }
  
  該程序的輸出如下所示:
  
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上虞市| 松原市| 龙海市| 策勒县| 三台县| 古浪县| 烟台市| 贡嘎县| 天峻县| 错那县| 肥城市| 枣强县| 兴隆县| 武乡县| 梅州市| 德阳市| 南安市| 当雄县| 二连浩特市| 兴国县| 锡林郭勒盟| 洛宁县| 山东省| 大关县| 方山县| 伊宁县| 黄陵县| 万盛区| 重庆市| 曲水县| 海丰县| 黄梅县| 河源市| 永吉县| 泸定县| 玛纳斯县| 太仓市| 岐山县| 海口市| 水富县| 万年县|