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

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

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

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

  15.10.3 Stack
  
  Stack是Vector的一個子類,它實現標準的后進先出堆棧。Stack僅僅定義了創建空堆棧的默認構造函數。Stack包括了由Vector定義的所有方法,同時增加了幾種它自己定義的方法,具體總結在表15-11中。
  
  表15-11 由Stack 定義的方法
  
  方法描述
  
  boolean empty( ) 假如堆棧是空的,則返回true,當堆棧包含有元素時,返回false
  
  Object peek( ) 返回位于棧頂的元素,但是并不在堆棧中刪除它
  
  Object pop( ) 返回位于棧頂的元素,并在進程中刪除它
  
  Object push(Object element) 將element壓入堆棧,同時也返回element
  
  int search(Object element) 在堆棧中搜索element,假如發現了,則返回它相對于棧頂的偏移量。否則,返回-1
  
  調用push( )方法可將一個對象壓入棧頂。調用pop( )方法可以刪除和返回棧頂的元素。當調用堆棧是空的時,假如調用pop( )方法,將引發一個EmptyStackException異常。調用peek( )方法返回但不刪除棧頂的對象。調用empty( )方法,當堆棧中沒有元素時,返回true.search( )方法確定一個對象是否存在于堆棧,并且返回將其指向棧頂所需的彈出次數。下面是一個創建堆棧的例子,在例子中,將幾個整型(Integer)對象壓入堆棧,然后再將它們彈出。
  
  // Demonstrate the Stack class.
  
  import java.util.*;
  
  class StackDemo {
  
  static void showpush(Stack st, int a) {
  
  st.push(new Integer(a));
  
  System.out.  
  System.out.println("stack: " + st);
  
  }
  
  static void showpop(Stack st) {
  
  System.out.print("pop -> ");
  
  Integer a = (Integer) st.pop();
  
  System.out.println(a);
  
  System.out.println("stack: " + st);
  
  }
  
  public static void main(String args[]) {
  
  Stack st = new Stack();
  
  System.out.println("stack: " + st);
  
  showpush(st, 42);
  
  showpush(st, 66);
  
  showpush(st, 99);
  
  showpop(st);
  
  showpop(st);
  
  showpop(st);
  
  try {
  
  showpop(st);
  
  } catch (EmptyStackException e) {
  
  System.out.println("empty stack");
  
  }
  
  }
  
  }
  
  下面是由該程序產生的輸出。注重對于EmptyStackException的異常處理程序是如何被捕捉以便于能夠從容地處理堆棧的下溢:
  
  stack: [ ]
  
  push(42)
  
  stack: [42]
  
  push(66)
  
  stack: [42, 66]
  
  push(99)
  
  stack: [42, 66, 99]
  
  pop -> 99
  
  stack: [42, 66]
  
  pop -> 66
  
  stack: [42]
  
  pop -> 42
  
  stack: [ ]
  
  pop -> empty stack
  
  15.10.4 Dictionary
  
  字典(Dictionary)是一個表示要害字/值存儲庫的抽象類,同時它的操作也很像映射(Map)。給定一個要害字和值,可以將值存儲到字典(Dictionary)對象中。一旦這個值被存儲了,就能夠用它的要害字來檢索它。因此,與映射一樣,字典可以被當做要害字/值對列表來考慮。盡管在Java 2中并沒有擯棄字典(Dictionary),由于它被映射(Map)所取代,從而被認為是過時的。然而由于目前Dictionary被廣泛地使用,因此這里仍對它進行具體的討論。
  
  由Dictionary定義的抽象方法在表15-12中列出。
  
  表15-12 由Dictionary 定義的抽象方法
  
  方法描述
  
  Enumeration elements( ) 返回對包含在字典中的值的枚舉Object get(Object key) 返回一個包含與key相連的值的對象。假如key不在字典中,則返回一個空對象
  
  boolean isEmpty( ) 假如字典是空的,則返回true;假如字典中至少包含一個要害字,則返回false
  
  Enumeration keys( ) 返回包含在字典中的要害字的枚舉Object put(Object key, Object value) 將一個要害字和它的值插入字典中。假如key已經不在字典中了,則返回null;假如key已經在字典中了,則返回與key相關聯的前一個值
  
  續表
  
  方法描述
  
  Object remove(Object key) 刪除key和它的值。返回與key相關聯的值。假如key不在字典中,則返回null
  
  int size( ) 返回字典中的項數使用put( )方法在字典中增加要害字和值。使用get( )方法檢索給定要害字的值。當分別使用keys( )和elements( )方法進行枚舉(Enumeration)時,要害字和值可以分別逐個地返回。size( )方法返回存儲在字典中的要害字/值對的個數。當字典是空的時候,isEmpty( )返回true.使用remove( )方法可以刪除要害字/值對。
  
  注重:Dictionary類是過時的。應該執行Map接口去獲得要害字/值存儲的功能。
  
  15.10.5 Hashtable
  
  散列表(Hashtable)是原始java.util中的一部分同時也是Dictionary的一個具體實現。然而,Java 2重新設計了散列表(Hashtable)以便它也能實現映射(Map)接口。因此現在Hashtable也被集成到類集框架中。它與HashMap相似,但它是同步的。
  
  和HashMap一樣,Hashtable將要害字/值對存儲到散列表中。使用Hashtable時,指定一個對象作為要害字,同時指定與該要害字相關聯的值。接著該要害字被散列,而把得到的散列值作為存儲在表中的值的下標。散列表僅僅可以存儲重載由Object定義的hashCode( )和equals( )方法的對象。hashCode( )方法計算和返回對象的散列碼。當然,equals( )方法比較兩個對象。幸運的是,許多Java內置的類已經實現了hashCode( )方法。例如,大多數常見的Hashtable類型使用字符串(String)對象作為要害字。String實現hashCode( )和equals( )方法。
  
  Hashtable的構造函數如下所示:
  
  Hashtable( )
  
  Hashtable(int size)
  
  Hashtable(int size, float fillRatio)
  
  Hashtable(Map m)
  
  第一種形式是默認的構造函數。第二種形式創建一個散列表,該散列表具有由size指定的原始大小。第三種形式創建一個散列表,該散列表具有由size指定的原始大小和由fillRatio指定的填充比。填充比必須介于0.0和1.0之間,它決定了在散列表向上調整大小之前散列表的布滿度。具體地說,當元素的個數大于散列表的容量乘以它的填充比時,散列表被擴展。假如沒有指定填充比,默認使用0.75.最后,第四種形式創建一個散列表,該散列表用m中的元素初始化。散列表的容量被設為m中元素的個數的兩倍。默認的填充因子設為0.75.第四種構造函數是在Java 2中新增加的。
  
  除了Hashtable目前實現的,由Map接口定義的方法之外,Hashtable定義的從以前版本遺留下來的方法列在表15-13中。
  
  表15-13 由Hashtable 定義的從以前版本遺留下來的方法
  
  方法描述
  
  void clear( ) 復位并清空散列表
  
  Object clone( ) 返回調用對象的復制
  
  boolean contains(Object value) 假如一些值與存在于散列表中的value相等的話,則返回true;假如這個值不存在,則返回false
  
  boolean containsKey(Object key) 假如一些要害字與存在于散列表中的key相等的話,則返回true;假如這個要害字不存在,則返回false
  
  boolean containsValue(Object value) 假如一些值與散列表中存在的value相等的話,返回true;假如這個值沒有找到,則返回false(是一種為了保持一致性而在Java2中新增加的非Map方法)
  
  Enumeration elements( ) 返回包含在散列表中的值的枚舉
  
  Object get(Object key) 返回包含與key相關聯的值的對象。假如key不在散列表中,則返回一個空對象
  
  boolean isEmpty( ) 假如散列表是空的,則返回true;假如散列表中至少包含一個要害字,則返回false
  
  Enumeration keys( ) 返回包含在散列表中的要害字的枚舉
  
  Object put(Object key, Object value) 將要害字和值插入散列表中。假如key已經不在散列表中,返回null。假如key已經存在于散列表中,則返回與key相連的前一個值
  
  void rehash( ) 增大散列表的大小并且對其要害字進行再散列。
  
  Object remove(Object key) 刪除key及其對應的值。返回與key相關聯的值。假如key不在散列表中,則返回一個空對象
  
  int size( ) 返回散列表中的項數
  
  String toString( ) 返回散列表的等價字符串形式
  
  下面的例子重寫前面介紹的關于銀行賬目的程序。在重寫的程序中,使用Hashtable儲存銀行存款人的名字和他們當前的資產平衡表:
  
  // Demonstrate a Hashtable
  
  import java.util.*;
  
  class HTDemo {
  
  public static void main(String args[]) {
  
  Hashtable balance = new Hashtable();
  
  Enumeration names;
  
  String str;
  
  double bal;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临城县| 浦城县| 沿河| 绵竹市| 杂多县| 承德县| 衡南县| 伽师县| 鲜城| 达孜县| 灵寿县| 台中市| 峨山| 浦县| 临泉县| 棋牌| 泌阳县| 息烽县| 霍州市| 上思县| 永胜县| 伽师县| 彭水| 友谊县| 沭阳县| 东兴市| 南漳县| 潮州市| 桐梓县| 巧家县| 乐业县| 涞源县| 班戈县| 宜阳县| 同心县| 勃利县| 博兴县| 池州市| 尉氏县| 随州市| 青州市|