Enumeration介面
Enumeration介面本身不是一個資料結構。但是,對其他資料結構非常重要。 Enumeration介面定義了從一個資料結構得到連續資料的手段。例如,Enumeration定義了一個名為nextElement的方法,可以用來從含有多個元素的資料結構中得到的下一個元素。
Enumeration介面提供了一套標準的方法,由於Enumeration是一個介面,它的角色侷限於為資料結構提供方法協議。下面是一個使用的例子:
//e is an object that implements the Enumeration interface
while (e.hasMoreElements()) {
Object o= e.nextElement();
System.out.println(o);
}
實現該介面的物件由一系列的元素組成,可以連續地呼叫nextElement()方法來得到 Enumeration列舉物件中的元素。Enumertion介面中僅定義了下面兩個方法。
·boolean hasMoreElemerts()
測試Enumeration列舉物件中是否還含有元素,如果返回true,則表示還含有至少一個的元素。
·Object nextElement()
如果Bnumeration列舉物件還含有元素,該方法得到物件中的下一個元素。
【例】
/*
* @(#)DemoEnumeration.java
* 演示Enumeration介面的使用
* /
import java.util.*;
class DemoEnumeration{
public static void main(String[] args){
//例項化MyDataStruct型別的物件
MyDataStruct mySataStruct=new myDataStruct();
//得到描述myDataStruct型別物件的enumeration物件
Enumeration myEnumeration =myDataStruct.getEnum();
//使用物件迴圈顯示myDataStruct型別的物件中的每一個元素
while (myEnumeration.hasMoreElements())
System.out.println(myEnumeration.nextElement());
}
}
//MyEnumeration類實現Enumeration介面
class MyEnumerator implements Enumeration
{
int count; // 計數器
int length; //儲存的陣列的長度
object[] dataArray; // 儲存資料陣列的引用
//構造器
MyEnumeration(int count,int length,object[] dataArray){
this.count = count;
this.length= length;
this.dataArray=dataArray;
}
public boolean hasMoreElements() {
return (count< length);
}
public Object nextElement() {
return dataArray[count++];
}
}
//MyDataStruct類用於例項化一個簡單的、可以提供enumeration物件
//給使用程式的資料結果物件
class MyDataSttuct
{
String[] data;
// 構造器
MyDataStruct(){
data=new String[4]
data[0] ="zero";
data[1]="one";
data[2] ="two";
data[3]="three";
}
// 返回一個enumeration物件給使用程式
Enumeration getEnum() {
return new MyEnumeration(0,data.length,data);
}
程式的執行結果為:
zero
one
two
three