糯米文學吧

位置:首頁 > 計算機 > java語言

Java常用數據結構及類

java語言3.03W

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());

}

}

}