1.1.2.2 Vector類與Enumeration接口
Vector類用于保存一組對(duì)象,由于java不支持動(dòng)態(tài)數(shù)組,Vector可以用于實(shí)現(xiàn)跟動(dòng)態(tài)數(shù)組差不多的功能。如果要將一組對(duì)象存放在某種數(shù)據(jù)結(jié)構(gòu)中,但是不能確定對(duì)象的個(gè)數(shù)時(shí),Vector是一個(gè)不錯(cuò)的選擇。
例:將鍵盤上輸入的一個(gè)數(shù)字序列的每位數(shù)字存儲(chǔ)在vector對(duì)象中,然后在屏幕上打印出各位數(shù)字相加的結(jié)果。
import java.util.*; //Vector類和Enumeration接口都在這個(gè)包中
public class TestVector
{
public static void main(String[] args)
{
Vector v=new Vector();
int b=0;
int num=0;
System.out.println("Please enter number:");
while(true)
{
try
{
b=System.in.read(); //從鍵盤讀入一個(gè)字節(jié)內(nèi)容
}
catch(Exception e)
{
e.printStackTrace();
}
if(b=='\r'||b=='\n') //如果是回車或換行的話,則退出while循環(huán),即一串?dāng)?shù)據(jù)輸入完成
{
break;
}
else
{
num=b-'0';
/*由于輸入的是字符數(shù)字,它的數(shù)值是它的ascii碼,例如‘0’=32;‘1’=33,
所以要想讓輸入的‘1’在計(jì)算機(jī)里為1,必須減去32,即‘0’*/
v.addElement(new Integer(num)); //將數(shù)字存入vector
}
}
int sum=0;
Enumeration e=v.elements();
//取出Vector中的所有元素,必須使用elements()方法,它返回一個(gè)Enumeration接口。
while(e.hasMoreElements())//如果當(dāng)前指示器還指向一個(gè)對(duì)象,即還有數(shù)據(jù)
{
Integer intobj=(Integer)e.nextElement();
//取出當(dāng)前指示器所指的對(duì)象,并將指示器指向下一個(gè)對(duì)象。
sum+=intobj.intValue(); //將Integer對(duì)象中所包裝的整數(shù)取出來(lái),并且加到sum中。
}
System.out.println(sum);//打印出這個(gè)和
}
}
Enumeration的nextelement()方法返回的是指示器指示的對(duì)象,然后將指示器指向下一個(gè)對(duì)象。
由于vector可以存儲(chǔ)各種類型的對(duì)象,所以編譯器無(wú)法知道存儲(chǔ)的是什么類型的對(duì)象,所以即使我們知道里面存儲(chǔ)的是什么類型的,也要顯示的說(shuō)明它是什么類型的,如本例中的(Integer)e.nextElement();
Enumeration接口實(shí)現(xiàn)了一種機(jī)制,通過(guò)這種機(jī)制,我們就可以只用hasMoreElements()方法以及nextElement()方法就可以實(shí)現(xiàn)所有對(duì)象的訪問(wèn)。
相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |