當前位置:才華齋>計算機>java語言>

Java常用資料結構及類

java語言 閱讀(3.07W)

Java可以編寫桌面應用程式、Web應用程式、分散式系統和嵌入式系統應用程式等。本文特意為大家收集整理了Java常用資料結構及類,希望大家喜歡!

Java常用資料結構及類

  一、Vector類

Vector類似於一個數組,但與陣列相比在使用上有以下兩個優點。

1、使用的時候無需宣告上限,隨著元素的增加,Vector的長度會自動

增加。

2、Vector提供額外的方法來增加、刪除元素,比陣列操作高效

Vector類有三個建構函式,分別如下:

public Vector();

該方法建立一個空的Vector。

public Vector(int initialCapacity);

該方法建立一個初始長度為initialCapacity的Vector。

public Vector(int intialCapacity,int capacityIncrement);

該方法建立一個初始長度為initialCapacity的Vector,當向量需要增長時,增加capacityIncrement個元素。

(1)Vector類中新增、刪除物件的方法如下:

public void add(int index,Object elemtent)

在index位置新增物件element。

public boolean add(Object o)

在Vector的末尾新增物件o。

public Object remove(int index)

刪除index位置的物件,後面的物件依次前提。

(2)Vector類中訪問、修改物件的方法如下:

public Object get(int index)

返回index位置物件。

public Object set(int index,Object element)

修改index位置的物件為element。

(3)其它方法:

public String toString()

將元素轉換成字串。

public int size()

返回物件的長度。

例1:操作Vector物件,進行元素的新增、插入、修改和刪除。程式輸出結果如圖1所示。源程式程式碼如下:

//程式檔名為

import or;//引入JDK的Vector類

public class UseVector

{

public static void main(String[] args)

{

Vector vScore=new Vector();

("86");//新增元素

("98");//新增元素

(1,"99");//插入元素

//輸出結果

for(int I=0;I

{

t((i)+" ");

}

(1,"77");//修改第二個元素

ve(0);//刪除第一個元素

tln("修改並刪除之後");

for(int I=0;I

{

t((i)+" ");

}

tln(:轉換成字串之後的輸出" +ring());

}

};

  二、Hashtable類

Hashtable類儲存的是物件的名-值對。將物件的名和它的值相關聯同時儲存,並可以根據物件名來提取它的值。在Hashtable中,一個鍵名只能對應著一個鍵值,然而一個鍵值可以對應多個鍵名,鍵名必須是惟一的。建構函式以及常用方法如下:

public Hashtable()

構建散列表。

public Hashtable(int initialCapacity)

構建長度為initialCapacity的散列表。

public int size()

返回散列表的名的個數。

public Object remove(Object key)

刪除散列表中key名及其對應的value值。

public Object put(Object key,Object value)

將物件名key和物件值value存放到散列表中。

public Object get(Object key)

返回散列表key名對應的值。

public String toString()

轉換成字串。

例2:操作Hashtable物件,進行新增、修改、刪除等操作,輸出結果如圖2所示。源程式程式碼如下:

//程式檔名為

import table;

public class UseHashtable

{

public static void main(String[] args)

{

Hashtable hScore=new Hashtable();

("張一","86");

("李二","98");

("海飛","99");

tln("轉換成字串之後的輸

出:"+ring());

("李二 ","77");

ve("張一");

tln("修改並刪除之後");

tln("轉換成字串之後的.輸出:"+ring());

}

}

  三、Enumeration介面

實現Enumeration介面的物件生成一系列元素,通過nextElement()方法依次讀取下一個元素。只有以下兩個方法:

public boolean hasMoreElements()

測試是否還有元素

public Object nextElement()

返回列舉的下一個元素。

Enumeration介面及其方法通常與Vector、Hashtable一起連用,用來列舉Vector中的項和Hashtable中的鍵名,例如:

for(Enumeration e=ents();oreElements();)

tln(Element());

例3:使用Enumeration介面列舉Vector中的物件和Hashtable物件中的鍵名,並進行輸出,結果如圖3所示。源程式程式碼如下:

//程式檔名

import .*;

public class UseEnumeration

{

public static void main(string[] args)

{

Vector vScore=new Vector();

("86");

("98");

(1,"99");

tln("Vector:"+ring());

for(Enumeration e=ents();oreElements();)

tln(Element());

Hashtable hScore=new Hashtable();

("張一","86");

("李二","98");

("海飛","99");

tln("Hashtable:"+ring());

for(Enumeration e=();oreElements();)

{

String str=(String)Element();

t(str+":");

tln((str));

}

}

}

  四、Date類

Date類用來指定日期和時間,其建構函式及常用方法如下:

public Date()

從當前時間構造日期時間物件。

public String toString()

轉換成字串。

public long getTime()

返回自新世紀以來的毫秒數,可以用於時間計算。

例4:測試執行迴圈花費的時間(數量級為毫秒),具體時間情況如圖4所示。源程式程式碼如下:

//程式檔名為

import ;

public class UseDate

{

public static void main(String[] args)

{

Date dOld=new Date();

long lOld=ime();

tln("迴圈前系統時間為:"+ring());

int sum=0

for(int i=0;i<100;i++)

{

sum +=i;

}

Date dNew=new Date();

long lNew=ime();

tln("迴圈後系統時間為:"+ring());

tln("迴圈花費的毫秒數為:"+(lNew-lOld));

}

}

  五、String類

String類用於操作非數值型字串,它提供了七類方法操作,分別為字串建立、字串長度、字串比較、字串檢索、字串擷取、字串運算和資料型別轉換。

1、字串建立

public String()

構造一個空字串。

public String(char[] value)

使用字串陣列value中的字元以構造一個字串。

public String(String original)

使用原字串original的拷貝以構造一個新字串。

2、字串長度

public int length()

返回字串的長度。

3、字串比較

public boolean equals(Object anObject)

比較字串是否與anObject代表的字串相同(區分大小寫)。

public boolean equalsIgnoreCase(String anotherString)

比較字串是否與anotherString相同(不區分大小寫)。

4、字串檢索

public int indexOF(String str)

返回一個字串中str第一次出現所在的位置。

public int indexOf(String str,int fromIndex)

返回從fromIndex開始字串str出現所在的位置。

5、字串擷取

public String substring(int beginIndex,int endIndex)

返回benginIndex到endIndex之間的字串。

6、字串運算

運算子為“+”,表示連線運算。下面的行語句輸出連線的字串

tln("Hashtable:"+ring());

例5:操作字串,輸出結果如圖5所示。源程式程式碼如下:

//程式檔名為

public class TestString

{

public static void main(String[] args)

{

String str=new String("The substring begins at the specified beginIndex.");

String str1=new String("string");

String str2=new String();

int size=th();//字串長度

int flag=xOf("substring");

str2=tring(flag,flag+9);//取子字串

tln("字串"+str+"總長度為:"+size);

if(ls(str2))//判斷是否相等

tln("擷取的字串為:"+str1)

else

tln("擷取的字串為:"+str2);

}

}

7、資料型別轉換

各種原始資料型別與String型別之間可以通過方法相互轉換。

valueOf()系列的靜態方法用於從其它物件(原始資料型別物件)轉換成字串。例如:

public static String valueOf(Boolean b)

public static String valueOf(char c)

public static String valueOf(int i)

public static String valueOf(long l)

public static String valueOf(float f)

public static String valueOf(double d)

具體例項如下:

(1)從int轉換到String。

例如:

int intvar=1;

String strvar;

strvar=eOf(intvar);//"1"

(2)從float轉換到String。

例如:

folat fltvar=9.99f;

String strvar;

strvar=eOf(fltvar);//"9.99"

(3)從double轉換到String。

例如:

duble dblvar=99999999.99

String strvar;

strvar=eOf(dblvar);//"9.999999999E7"

(4)從char轉換到String。

例如:

char chrvar='a';

String strvar;

strvar=eOf(chrvar);//"a"

(5)從String轉換到int、float、long、double。

例如:

String intstr="10";

String fltstr="10.1f";

String longstr="99999999";

String dblstr="99999999.9";

int i=eInt(intstr);//10

float f=eFloat(fltstr);//10.1

long lo=eLong(longstr);//99999999

double d=eDouble(dblstr);//9.99999999E7

(6)從String轉換到byte、short。

例如:

String str="0";

byte b=eByte(str);//0

short sh=eShort(str);//0

(7)從String轉換到char。

例如:

String str="abc";

char a=At(0);//返回字元a

(8)從String轉換到boolean。

例如:

String str="true";

Boolean flag=eOf(str);//true

  六、StringBuffer類

StringBuffer類提供了一個字串的可變序列,類似於String類,但它對儲存的字元序列可以任意修改,使用起來比較String類靈活的多。它常用的建構函式為:

StringBuffer()

構造一個空StringBuffer物件,初始容量為16個字元。

StringBuffer(String str)

構造一個StringBuffer物件,初始內容為字串str的拷貝。

對於StringBuffer類,除了String類中常用的像長度、字串擷取、字串檢索的方法可以使用之外,還有兩個較為方便的方法系列,即append方法系列和方法系列。

(1)append方法系列根據引數的資料型別在StringBuffer物件的末尾直接進行資料新增。

public StringBuffer append(boolean b)

public StringBuffer append(char c)

public StringBuffer append(char[] str)

public Stringbuffer append(char[] str,int offset,int len)

public StringBuffer append(double d)

public StringBuffer append(float f)

public StringBuffer append(int i)

public StringBuffer append(long l)

public StringBuffer append(Object obj)

public StringBuffer append(String str)

public StringBuffer append(StringBuffer sb)

(2)方法系列根據引數的資料型別在StringBuffer的offset位置進行資料插入。

public StringBuffer (int offset,boolean b)

public StringBuffer (int offset,char c)

public StringBuffer (int offset,char[] str)

public StringBuffer (int index,char[] str,int offset,int len)

public StringBuffer (int offset,double d)

public StringBuffer (int offset,float f)

public StringBuffer (int offset,int i)

public StringBuffer (int offset,long l)

public StringBuffer (int offset,Object odj)

public StringBuffer (int offset,String str)

(3)下面這個方法用於將stringbuffer物件的資料轉換成字串:

public String toString()

例6:基於例5進行修改,使用StringBuffer物件得到如圖6所示的輸出介面。

//程式檔名為

public class TestString

{

public static void main(String[] args)

{

StringBuffer str=new StringBuffer(" The substring begins at the specified beginIndex.");

StringBuffer str1=new StringBuffer("string");

String str2=new String();

int size=th();

int flag=xOf("substring");

str2=tring(flag,flag+9);

StringBuffer strOut=new StringBuffer("字串");

nd(str);

nd("總長度為:");

nd(size);

int f=xOf("總");

strOut.(f,'');

tln(ring());

if(ring()ls(str2))

tln("擷取的字串為:"+ring());

else

tln("擷取的字串為:"+str2):

}

}

  七、StringTokenizer類

StringTokenizer類是一個實現Enumeration介面的類,它使得程式可以將字串分成多個記號,預設情況下以空格為分隔符,例如將字串分成多個記號,預設情況下以空格為分隔符,例如將字串“this is test”分成四個單詞記號。使用者也可以指定分隔符。分隔符為false,分割字串;分隔符為true,則將分隔符自身作為分割後的字串的一部分。其建構函式和常用方法如下:

StringTokenizer(String str)

以字串str構建StringTokenizer物件。

StringTokenizer(String str,String delim)

使用delim分隔符,以初始字串str構建StringTokenizer物件。

int countTokens()

返回識別的總記號數

boolean hasMoreTokens()

測試是否還有識別的記號。

boolean nextToken(String delim)

返回字串delim分隔的下一個記號。

String nextToken()

返回下一個識別的記號。

例7:使用StringTOkenizer類分割字串,字串的分割情況如圖7所示。源程式程式碼如下:

import .*;

public class UseToken

{

public static void main(String[] args)

{

String str="數學::英語::語文::化學";

StringTokenizer st=new StringTokenizer(str,"::");

tln(str+"課程數為:"+tTokens());

while(oreTokens())

{

tln(Token("::"));

}

str="Hello this is a test";

st=new StringTokenizer(str);

tln(str+"單詞數為:"+tTokens());

while(oreTokens())

{

tln(Token());

}

}

}