- 相關(guān)推薦
Java常用數(shù)據(jù)結(jié)構(gòu)及類
Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。本文特意為大家收集整理了Java常用數(shù)據(jù)結(jié)構(gòu)及類,希望大家喜歡!
一、Vector類
Vector類似于一個(gè)數(shù)組,但與數(shù)組相比在使用上有以下兩個(gè)優(yōu)點(diǎn)。
1、使用的時(shí)候無需聲明上限,隨著元素的增加,Vector的長度會(huì)自動(dòng)
增加。
2、Vector提供額外的方法來增加、刪除元素,比數(shù)組操作高效。
Vector類有三個(gè)構(gòu)造函數(shù),分別如下:
public Vector();
該方法創(chuàng)建一個(gè)空的Vector。
public Vector(int initialCapacity);
該方法創(chuàng)建一個(gè)初始長度為initialCapacity的Vector。
public Vector(int intialCapacity,int capacityIncrement);
該方法創(chuàng)建一個(gè)初始長度為initialCapacity的Vector,當(dāng)向量需要增長時(shí),增加capacityIncrement個(gè)元素。
(1)Vector類中添加、刪除對(duì)象的方法如下:
public void add(int index,Object elemtent)
在index位置添加對(duì)象element。
public boolean add(Object o)
在Vector的末尾添加對(duì)象o。
public Object remove(int index)
刪除index位置的對(duì)象,后面的對(duì)象依次前提。
(2)Vector類中訪問、修改對(duì)象的方法如下:
public Object get(int index)
返回index位置對(duì)象。
public Object set(int index,Object element)
修改index位置的對(duì)象為element。
(3)其它方法:
public String toString()
將元素轉(zhuǎn)換成字符串。
public int size()
返回對(duì)象的長度。
例1:操作Vector對(duì)象,進(jìn)行元素的添加、插入、修改和刪除。程序輸出結(jié)果如圖1所示。源程序代碼如下:
//程序文件名為UseVector.java
import java.util.Vector;//引入JDK的Vector類
public class UseVector
{
public static void main(String[] args)
{
Vector vScore=new Vector();
vScore.add("86");//添加元素
vScore.add("98");//添加元素
vScore.add(1,"99");//插入元素
//輸出結(jié)果
for(int I=0;I
{
System.out.print(vScore.get(i)+" ");
}
vScore.set(1,"77");//修改第二個(gè)元素
vScore.remove(0);//刪除第一個(gè)元素
System.out.println(" 修改并刪除之后");
for(int I=0;I
{
System.out.print(vScore.get(i)+" ");
}
System.out.println(: 轉(zhuǎn)換成字符串之后的輸出 " +vScore.toString());
}
};
二、Hashtable類
Hashtable類存儲(chǔ)的是對(duì)象的名-值對(duì)。將對(duì)象的名和它的值相關(guān)聯(lián)同時(shí)存儲(chǔ),并可以根據(jù)對(duì)象名來提取它的值。在Hashtable中,一個(gè)鍵名只能對(duì)應(yīng)著一個(gè)鍵值,然而一個(gè)鍵值可以對(duì)應(yīng)多個(gè)鍵名,鍵名必須是惟一的。構(gòu)造函數(shù)以及常用方法如下:
public Hashtable()
構(gòu)建散列表。
public Hashtable(int initialCapacity)
構(gòu)建長度為initialCapacity的散列表。
public int size()
返回散列表的名的個(gè)數(shù)。
public Object remove(Object key)
刪除散列表中key名及其對(duì)應(yīng)的value值。
public Object put(Object key,Object value)
將對(duì)象名key和對(duì)象值value存放到散列表中。
public Object get(Object key)
返回散列表key名對(duì)應(yīng)的值。
public String toString()
轉(zhuǎn)換成字符串。
例2:操作Hashtable對(duì)象,進(jìn)行添加、修改、刪除等操作,輸出結(jié)果如圖2所示。源程序代碼如下:
//程序文件名為UseHashtable.java
import java.util.hashtable;
public class UseHashtable
{
public static void main(String[] args)
{
Hashtable hScore=new Hashtable();
hScore.put("張一","86");
hScore.put("李二","98");
hScore.put("海飛","99");
System.out.println("轉(zhuǎn)換成字符串之后的輸
出:"+hScore.toString());
hScore.put("李二 ","77");
hScore.remove("張一");
System.out.println("修改并刪除之后");
System.out.println("轉(zhuǎn)換成字符串之后的輸出:"+hScore.toString());
}
}
三、Enumeration接口
實(shí)現(xiàn)Enumeration接口的對(duì)象生成一系列元素,通過nextElement()方法依次讀取下一個(gè)元素。只有以下兩個(gè)方法:
public boolean hasMoreElements()
測試是否還有元素
public Object nextElement()
返回枚舉的下一個(gè)元素。
Enumeration接口及其方法通常與Vector、Hashtable一起連用,用來枚舉Vector中的項(xiàng)和Hashtable中的鍵名,例如:
for(Enumeration e=v.elements();e.hasMoreElements();)
System.out.println(e.nextElement());
例3:使用Enumeration接口枚舉Vector中的對(duì)象和Hashtable對(duì)象中的鍵名,并進(jìn)行輸出,結(jié)果如圖3所示。源程序代碼如下:
//程序文件名UseEnumeration.java
import java.util.*;
public class UseEnumeration
{
public static void main(string[] args)
{
Vector vScore=new Vector();
vScore.add("86");
vScore.add("98");
vScore.add(1,"99");
System.out.println("Vector:"+vScore.toString());
for(Enumeration e=vScore.elements();e.hasMoreElements();)
System.out.println(e.nextElement());
Hashtable hScore=new Hashtable();
hScore.put("張一","86");
hScore.put("李二","98");
hScore.put("海飛","99");
System.out.println("Hashtable:"+hScore.toString());
for(Enumeration e=hScore.keys();e.hasMoreElements();)
{
String str=(String)e.nextElement();
System.out.print(str+":");
System.out.println(hScore.get(str));
}
}
}
四、Date類
Date類用來指定日期和時(shí)間,其構(gòu)造函數(shù)及常用方法如下:
public Date()
從當(dāng)前時(shí)間構(gòu)造日期時(shí)間對(duì)象。
public String toString()
轉(zhuǎn)換成字符串。
public long getTime()
返回自新世紀(jì)以來的毫秒數(shù),可以用于時(shí)間計(jì)算。
例4:測試執(zhí)行循環(huán)花費(fèi)的時(shí)間(數(shù)量級(jí)為毫秒),具體時(shí)間情況如圖4所示。源程序代碼如下:
//程序文件名為UseDate.java
import java.util.Date;
public class UseDate
{
public static void main(String[] args)
{
Date dOld=new Date();
long lOld=dOld.getTime();
System.out.println("循環(huán)前系統(tǒng)時(shí)間為:"+dOld.toString());
int sum=0
for(int i=0;i<100;i++)
{
sum +=i;
}
Date dNew=new Date();
long lNew=dNew.getTime();
System.out.println("循環(huán)后系統(tǒng)時(shí)間為:"+dNew.toString());
System.out.println("循環(huán)花費(fèi)的毫秒數(shù)為:"+(lNew-lOld));
}
}
五、String類
String類用于操作非數(shù)值型字符串,它提供了七類方法操作,分別為字符串創(chuàng)建、字符串長度、字符串比較、字符串檢索、字符串截取、字符串運(yùn)算和數(shù)據(jù)類型轉(zhuǎn)換。
1、字符串創(chuàng)建
public String()
構(gòu)造一個(gè)空字符串。
public String(char[] value)
使用字符串?dāng)?shù)組value中的字符以構(gòu)造一個(gè)字符串。
public String(String original)
使用原字符串original的拷貝以構(gòu)造一個(gè)新字符串。
2、字符串長度
public int length()
返回字符串的長度。
3、字符串比較
public boolean equals(Object anObject)
比較字符串是否與anObject代表的字符串相同(區(qū)分大小寫)。
public boolean equalsIgnoreCase(String anotherString)
比較字符串是否與anotherString相同(不區(qū)分大小寫)。
4、字符串檢索
public int indexOF(String str)
返回一個(gè)字符串中str第一次出現(xiàn)所在的位置。
public int indexOf(String str,int fromIndex)
返回從fromIndex開始字符串str出現(xiàn)所在的位置。
5、字符串截取
public String substring(int beginIndex,int endIndex)
返回benginIndex到endIndex之間的字符串。
6、字符串運(yùn)算
運(yùn)算符為“+”,表示連接運(yùn)算。下面的行語句輸出連接的字符串
System.out.println("Hashtable:"+hScore.toString());
例5:操作字符串,輸出結(jié)果如圖5所示。源程序代碼如下:
//程序文件名為TestString.java
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=str.length();//字符串長度
int flag=str.indexOf("substring");
str2=str.substring(flag,flag+9);//取子字符串
System.out.println("字符串"+str+" 總長度為:"+size);
if(str1.equals(str2))//判斷是否相等
System.out.println("截取的字符串為:"+str1)
else
System.out.println("截取的字符串為:"+str2);
}
}
7、數(shù)據(jù)類型轉(zhuǎn)換
各種原始數(shù)據(jù)類型與String類型之間可以通過方法相互轉(zhuǎn)換。
valueOf()系列的靜態(tài)方法用于從其它對(duì)象(原始數(shù)據(jù)類型對(duì)象)轉(zhuǎn)換成字符串。例如:
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)
具體實(shí)例如下:
(1)從int轉(zhuǎn)換到String。
例如:
int intvar=1;
String strvar;
strvar=String.valueOf(intvar);//"1"
(2)從float轉(zhuǎn)換到String。
例如:
folat fltvar=9.99f;
String strvar;
strvar=String.valueOf(fltvar);//"9.99"
(3)從double轉(zhuǎn)換到String。
例如:
duble dblvar=99999999.99
String strvar;
strvar=String.valueOf(dblvar);//"9.999999999E7"
(4)從char轉(zhuǎn)換到String。
例如:
char chrvar='a';
String strvar;
strvar=String.valueOf(chrvar);//"a"
(5)從String轉(zhuǎn)換到int、float、long、double。
例如:
String intstr="10";
String fltstr="10.1f";
String longstr="99999999";
String dblstr="99999999.9";
int i=Integer.parseInt(intstr);//10
float f=Float.parseFloat(fltstr);//10.1
long lo=Long.parseLong(longstr);//99999999
double d=Double.parseDouble(dblstr);//9.99999999E7
(6)從String轉(zhuǎn)換到byte、short。
例如:
String str="0";
byte b=Byte.parseByte(str);//0
short sh=Short.parseShort(str);//0
(7)從String轉(zhuǎn)換到char。
例如:
String str="abc";
char a=str.charAt(0);//返回字符a
(8)從String轉(zhuǎn)換到boolean。
例如:
String str="true";
Boolean flag=Boolean.valueOf(str);//true
六、StringBuffer類
StringBuffer類提供了一個(gè)字符串的可變序列,類似于String類,但它對(duì)存儲(chǔ)的字符序列可以任意修改,使用起來比較String類靈活的多。它常用的構(gòu)造函數(shù)為:
StringBuffer()
構(gòu)造一個(gè)空StringBuffer對(duì)象,初始容量為16個(gè)字符。
StringBuffer(String str)
構(gòu)造一個(gè)StringBuffer對(duì)象,初始內(nèi)容為字符串str的拷貝。
對(duì)于StringBuffer類,除了String類中常用的像長度、字符串截取、字符串檢索的方法可以使用之外,還有兩個(gè)較為方便的方法系列,即append方法系列和方法系列。
(1)append方法系列根據(jù)參數(shù)的數(shù)據(jù)類型在StringBuffer對(duì)象的末尾直接進(jìn)行數(shù)據(jù)添加。
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)方法系列根據(jù)參數(shù)的數(shù)據(jù)類型在StringBuffer的offset位置進(jìn)行數(shù)據(jù)插入。
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)下面這個(gè)方法用于將stringbuffer對(duì)象的數(shù)據(jù)轉(zhuǎn)換成字符串:
public String toString()
例6:基于例5進(jìn)行修改,使用StringBuffer對(duì)象得到如圖6所示的輸出界面。
//程序文件名為TestString.java
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=str.length();
int flag=str.indexOf("substring");
str2=str.substring(flag,flag+9);
StringBuffer strOut=new StringBuffer("字符串");
strOut.append(str);
strOut.append("總長度為:");
strOut.append(size);
int f=strOut.indexOf("總");
strOut.(f,' ');
System.out.println(strOut.toString());
if(str1.toString().equals(str2))
System.out.println("截取的字符串為:"+str1.toString());
else
System.out.println("截取的字符串為:"+str2):
}
}
七、StringTokenizer類
StringTokenizer類是一個(gè)實(shí)現(xiàn)Enumeration接口的類,它使得程序可以將字符串分成多個(gè)記號(hào),默認(rèn)情況下以空格為分隔符,例如將字符串分成多個(gè)記號(hào),默認(rèn)情況下以空格為分隔符,例如將字符串“this is test”分成四個(gè)單詞記號(hào)。用戶也可以指定分隔符。分隔符為false,分割字符串;分隔符為true,則將分隔符自身作為分割后的字符串的一部分。其構(gòu)造函數(shù)和常用方法如下:
StringTokenizer(String str)
以字符串str構(gòu)建StringTokenizer對(duì)象。
StringTokenizer(String str,String delim)
使用delim分隔符,以初始字符串str構(gòu)建StringTokenizer對(duì)象。
int countTokens()
返回識(shí)別的總記號(hào)數(shù)
boolean hasMoreTokens()
測試是否還有識(shí)別的記號(hào)。
boolean nextToken(String delim)
返回字符串delim分隔的下一個(gè)記號(hào)。
String nextToken()
返回下一個(gè)識(shí)別的記號(hào)。
例7:使用StringTOkenizer類分割字符串,字符串的分割情況如圖7所示。源程序代碼如下:
import java.util.*;
public class UseToken
{
public static void main(String[] args)
{
String str="數(shù)學(xué)::英語::語文::化學(xué)";
StringTokenizer st=new StringTokenizer(str,"::");
System.out.println(str+" 課程數(shù)為:"+st.countTokens());
while(st.hasMoreTokens())
{
System.out.println(st.nextToken("::"));
}
str="Hello this is a test";
st=new StringTokenizer(str);
System.out.println(str+" 單詞數(shù)為:"+st.countTokens());
while(st.hasMoreTokens())
{
System.out.println(st.nextToken());
}
}
}
【Java常用數(shù)據(jù)結(jié)構(gòu)及類】相關(guān)文章:
Java 數(shù)據(jù)結(jié)構(gòu)01-25
Java中的數(shù)據(jù)結(jié)構(gòu)06-19
JAVA語言常用的算法和數(shù)據(jù)結(jié)構(gòu)有哪些04-04
Java數(shù)據(jù)結(jié)構(gòu)和算法筆記01-22
Java的類07-19
Java File類有哪些常用方法07-27
java類的構(gòu)成08-02
Java的類常識(shí)03-29