版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java程序設(shè)計(jì)第7章工具類(lèi)及常用算法Java程序設(shè)計(jì)第7章工具類(lèi)及常用算法Java基礎(chǔ)類(lèi)庫(kù)JDK中提供的基礎(chǔ)類(lèi)庫(kù)又稱為JFC(javaFoundationClassLibrary),其中包含很多包,每個(gè)包中都有若干特定功能和相互關(guān)系的類(lèi)和接口。一些經(jīng)常使用的包為:
java.lang包//默認(rèn)加載的包
java.io包
java.util包
java.awt包
java.applet包
包
……Java基礎(chǔ)類(lèi)庫(kù)JDK中提供的基礎(chǔ)類(lèi)庫(kù)又稱為JFC(javaJava語(yǔ)言基礎(chǔ)類(lèi)java.lang
這個(gè)包包含了運(yùn)行程序不可少的類(lèi),包括基本數(shù)據(jù)類(lèi),基本數(shù)學(xué)類(lèi),字符串處理,異常處理等等。該包在程序時(shí)自動(dòng)引入。
java.io
標(biāo)準(zhǔn)的輸入輸出類(lèi)庫(kù),包含程序與系統(tǒng),用戶以及其他程序做的數(shù)據(jù)交換使用的類(lèi),包括基本I/O,文件I/O等。完成與操作系統(tǒng)有關(guān)的
I/O操作需要用到該包。Java語(yǔ)言基礎(chǔ)類(lèi)java.langJava語(yǔ)言基礎(chǔ)類(lèi)java.util包括一些實(shí)用工具,如Date類(lèi),Vector類(lèi),Stack類(lèi)等。使用它們可以方便編程。
java.awt圖形用戶界面(GUI)類(lèi)庫(kù)。包括許多界面和資源,如Graphics類(lèi),Container類(lèi)等等??梢岳迷摪帉?xiě)標(biāo)準(zhǔn)化的應(yīng)用程序界面。
java.applet
用來(lái)實(shí)現(xiàn)運(yùn)行于瀏覽器中的JavaApplet的工具類(lèi)庫(kù),常用的類(lèi)是java.applet.Applet。Java語(yǔ)言基礎(chǔ)類(lèi)java.utilJava語(yǔ)言基礎(chǔ)類(lèi)其他包 還有一些其他的包,如java.rmi是實(shí)現(xiàn)遠(yuǎn)過(guò)程調(diào)用功能,可以在遠(yuǎn)程機(jī)器上創(chuàng)建對(duì)象,在本地機(jī)器上使用;java.sql包是實(shí)現(xiàn)JDBC的類(lèi)庫(kù)。利用這個(gè)包可以是程序訪問(wèn)不同類(lèi)型的數(shù)據(jù)庫(kù)。只要安裝了對(duì)應(yīng)的驅(qū)動(dòng)程序,同一個(gè)程序就可以訪問(wèn)不同的數(shù)據(jù)庫(kù)。 如果想要詳細(xì)了解這些系統(tǒng)的類(lèi)庫(kù),可以參考JDK的文檔。Java語(yǔ)言基礎(chǔ)類(lèi)其他包Java語(yǔ)言基礎(chǔ)類(lèi)Object類(lèi)
Object類(lèi)是所有類(lèi)的直接或間接父類(lèi),也是類(lèi)庫(kù)當(dāng)中所有類(lèi)的父類(lèi),可以和任意類(lèi)型的對(duì)象匹配。所以可以用它作為形參的類(lèi)型,那么不論何種類(lèi)型的實(shí)際參數(shù)都可以與這個(gè)形參匹配,從而擴(kuò)大了方法得適用范圍。 常用得方法:
protectedObjectclone();//生成當(dāng)前對(duì)象得備份
publicbooleanequals(Objectobj);//比較兩個(gè)對(duì)象
publicStringtoString();//返回當(dāng)前對(duì)象得相關(guān)信息
Java語(yǔ)言基礎(chǔ)類(lèi)Object類(lèi)Java語(yǔ)言基礎(chǔ)類(lèi)equals方法該方法用來(lái)比較兩個(gè)對(duì)象是否相同,相同返回true,否則返回false。如果一個(gè)類(lèi)沒(méi)有覆蓋equals方法,那么這時(shí)候的相等是指兩個(gè)引用相等,也就是說(shuō)他們引用的是同一個(gè)對(duì)象。Java語(yǔ)言基礎(chǔ)類(lèi)equals方法Java語(yǔ)言基礎(chǔ)類(lèi)equals方法運(yùn)算符==關(guān)系運(yùn)算符生成的是一個(gè)“布爾”結(jié)果。它評(píng)價(jià)的是運(yùn)算對(duì)象值之間的關(guān)系。運(yùn)算符==適用于所有對(duì)象,但它的含義通常會(huì)使人找不到北。(見(jiàn)例子)一般人都會(huì)認(rèn)為輸出結(jié)果肯定先是true,再是false,因?yàn)閮蓚€(gè)Integer對(duì)象都是相同的。但盡管對(duì)象的內(nèi)容相同,句柄卻是不同的,而==比較的正好就是對(duì)象句柄。所以輸出結(jié)果實(shí)際上先是false,再是true。Java語(yǔ)言基礎(chǔ)類(lèi)equals方法Java語(yǔ)言基礎(chǔ)類(lèi)equals方法若想對(duì)比兩個(gè)對(duì)象的實(shí)際內(nèi)容是否相同,又該如何操作呢?此時(shí),必須使用所有對(duì)象都適用的特殊方法equals()。(例子)正如我們預(yù)計(jì)的那樣,此時(shí)得到的結(jié)果是true。但事情并未到此結(jié)束!假設(shè)您創(chuàng)建了自己的類(lèi),就象下面這樣(舉例)此時(shí)的結(jié)果又變回了false!這是由于equals()的默認(rèn)行為是比較句柄。所以除非在自己的新類(lèi)中改變了equals(),否則不可能表現(xiàn)出我們希望的行為。大多數(shù)Java類(lèi)庫(kù)都實(shí)現(xiàn)了equals(),所以它實(shí)際比較的是對(duì)象的內(nèi)容,而非它們的句柄。Java語(yǔ)言基礎(chǔ)類(lèi)equals方法Java語(yǔ)言基礎(chǔ)類(lèi)equals方法總結(jié)的來(lái)講,也就是說(shuō):
equals()默認(rèn)的是比較句柄,因?yàn)镴DK中的許多類(lèi)在實(shí)現(xiàn)的時(shí)候都覆蓋了equals()方法,所以一般使用java類(lèi)庫(kù)中的equals時(shí),比較的是對(duì)象的內(nèi)容;但是,如果用戶自己定義一個(gè)類(lèi),又沒(méi)有改寫(xiě)equals()方法,那么它比較的是句柄,除非用戶自己寫(xiě)equals()方法來(lái)使得它的功能為比較對(duì)象的內(nèi)容。Java語(yǔ)言基礎(chǔ)類(lèi)equals方法Java語(yǔ)言基礎(chǔ)類(lèi)toString()toString()方法用來(lái)返回對(duì)象的字符串表示,可以用來(lái)顯示一個(gè)對(duì)象。System.out.println()方法如果帶的參數(shù)是一個(gè)對(duì)象的話,那么它會(huì)自動(dòng)調(diào)用對(duì)象的toString()方法,那么它顯示的將是“類(lèi)名@內(nèi)存地址”。在自定的類(lèi)中一般來(lái)講覆蓋toString()方法。(舉例2個(gè))Java語(yǔ)言基礎(chǔ)類(lèi)toString()Java語(yǔ)言基礎(chǔ)類(lèi)
基本數(shù)據(jù)類(lèi)型包裝類(lèi)
java中提供了基本數(shù)據(jù)類(lèi)型的包裝類(lèi),以于面向?qū)ο蟮乃枷胍恢?。?duì)應(yīng)的也有8種:
Character,Byte,Short,Integer,Long,Float, Double,Boolean。他們都是作為類(lèi)來(lái)使用。
1、提供一些常數(shù)方便使用,Integer.MAX_VALUE,Double.NaN等。
2、提供valueOf(String),toString() 3、通過(guò)xxxValue()得到所包裝的值
4、對(duì)toString(),equals()等方法進(jìn)行覆蓋(舉例)Java語(yǔ)言基礎(chǔ)類(lèi)基本數(shù)據(jù)類(lèi)型包裝類(lèi)例7-4classDoubleString{ publicstaticvoidmain(String[]args) {
doubled; Strings; //double轉(zhuǎn)換成String的幾種方法
d=3.1415926; s=""+d; s=Double.toString(d); s=newDouble(d).toString(); s=String.valueOf(d);//string轉(zhuǎn)換成double的幾種方法
s="3.1414926"; try{ d=Double.parseDouble(s); d=newDouble(s).doubleValue(); d=Double.valueOf(s).doubleValue(); }catch(NumberFormatExceptione) { e.printStackTrace(); }
}}例7-4classDoubleString補(bǔ)充:裝包與拆包JDK1.5之前,基本數(shù)據(jù)類(lèi)型和包裝類(lèi)不能對(duì)等使用。
Integeri=newInteger(3);裝包
intiv=Value();拆包JDK1.5之后,可以自動(dòng)的進(jìn)行裝包和拆包:自動(dòng)裝包是指基本類(lèi)型自動(dòng)轉(zhuǎn)化為包裝類(lèi)型,自動(dòng)拆包指包裝類(lèi)自動(dòng)轉(zhuǎn)化為基本類(lèi)型。
Integeri=3;
intiv=I;補(bǔ)充:裝包與拆包JDK1.5之前,基本數(shù)據(jù)類(lèi)型和包裝類(lèi)不能對(duì)Java語(yǔ)言基礎(chǔ)類(lèi)Math類(lèi)該類(lèi)提供了一些不同標(biāo)準(zhǔn)的數(shù)學(xué)函數(shù)的方法,這些都是static方法,所以使用的時(shí)候不用創(chuàng)建Math類(lèi)的對(duì)象,可以直接通過(guò)類(lèi)名來(lái)調(diào)用這些方法:Math.所要用的方法。方便編程。關(guān)于具體的方法和屬性,可以查詢JDK的幫助文檔。(舉例)Java語(yǔ)言基礎(chǔ)類(lèi)Math類(lèi)例7-5classTestMath{ publicstaticvoidmain(String[]args) { inta=3; doubleb=1.5,c=32.2; doublef=0.0; f=1.0/2*(a+Math.sqrt(b*Math.sin(c))); System.out.println("f="+f); System.out.println("Math.ceil(3.1415)="+Math.ceil(3.1415)); System.out.println("Math.floor(3.1415)="+Math.floor(3.1415)); System.out.println("Math.round(987.654)="+Math.round(987.654)); System.out.println("Math.max(-987.654,301)="+Math.max(-987.654,301)); System.out.println("Math.PI="+Math.PI); }}例7-5classTestMathJava語(yǔ)言基礎(chǔ)類(lèi)System類(lèi)該類(lèi)是一個(gè)非常有用的特殊類(lèi),提供了標(biāo)準(zhǔn)輸入/輸出、運(yùn)行時(shí)系統(tǒng)信息等工具。由于該類(lèi)的一些屬性和方法這些都是static的,所以使用的時(shí)候不能創(chuàng)建System類(lèi)的對(duì)象,可以直接通過(guò)類(lèi)名來(lái)調(diào)用這些方法:System.所要用的方法。
Java語(yǔ)言基礎(chǔ)類(lèi)System類(lèi)Java語(yǔ)言基礎(chǔ)類(lèi)用system類(lèi)獲得標(biāo)準(zhǔn)輸入輸出publicstaticInputStreamin;publicstaticPrintStreamout;publicstaticPrintStreamerr;使用這些可以從標(biāo)準(zhǔn)輸入讀入數(shù)據(jù)或向標(biāo)準(zhǔn)輸出輸出數(shù)據(jù)。用system類(lèi)的方法獲得系統(tǒng)信息system類(lèi)提供一些與運(yùn)行時(shí)系統(tǒng)交互的方法,可以利用它們獲得解釋器或系統(tǒng)的信息,也可以向運(yùn)行系統(tǒng)發(fā)出指令。
publicstaticlongcurrentTimeMillis();publicstaticvoidexit(intstatus);Java語(yǔ)言基礎(chǔ)類(lèi)用system類(lèi)獲得標(biāo)準(zhǔn)輸入輸出示例7-6主要用來(lái)測(cè)試System類(lèi)的基本屬性及功能*/importjava.util.*;classTestSystem{ publicstaticvoidmain(String[]args) { Propertiesa; Enumerationps; Iteratorpi; a=System.getProperties(); a.setProperty("test_path","2"); //System.setProperties(a); System.out.println(System.getProperty("test_path")); System.out.println(System.getProperty("java.version")); /* pi=a.entrySet().iterator(); while(pi.hasNext()) {System.out.println(pi.next());} */ ps=pertyNames(); while(ps.hasMoreElements()) {Objectobj=ps.nextElement();ObjectobjVal=a.get(obj); System.out.println(""+obj+"="+objVal); } }}示例7-6主要用來(lái)測(cè)試System類(lèi)的基本屬性及功能*/字符數(shù)組與字符串字符串是字符的序列,它是組織字符的基本數(shù)據(jù)結(jié)構(gòu),從某種程度上來(lái)說(shuō)有些類(lèi)似于字符的數(shù)組。
char[]country={‘C’,’h’,’i’,’n’,’a’};[C++?]在Java中,字符串被當(dāng)作對(duì)象來(lái)處理。程序中需要用到的字符串可以分為兩大類(lèi),一類(lèi)是創(chuàng)建之后不會(huì)再做修改和變動(dòng)的String類(lèi);另一類(lèi)是創(chuàng)建之后允許再做更改和變化的StringBuffer類(lèi)。
Java會(huì)自動(dòng)為字符串常量生成一個(gè)String類(lèi)的對(duì)象,所以可以直接初始化String對(duì)象,如:
Strings=“SCEMIXMJ!”字符數(shù)組與字符串字符串是字符的序列,它是組織字符的基用一個(gè)已創(chuàng)建的字符串創(chuàng)建另一個(gè)字符串,如:
Strings1=newString(s);創(chuàng)建字符串對(duì)象使用String類(lèi)的構(gòu)造方法創(chuàng)建字符串對(duì)象,如:
Strings=newString(“WeareChinese");String(chara[]):用一個(gè)字符數(shù)組a創(chuàng)建一個(gè)字符串對(duì)象,如:
chara[]={‘X’,‘M’,‘J’};Strings=newString(a);String(chara[],intstartIndex,intcount):提取字符數(shù)組a中的一部分字符創(chuàng)建一個(gè)字符串對(duì)象,如:
chara[]={‘S’,‘C’,‘E’,‘M’,‘I’,‘X’,‘M’,‘J’};Strings=newString(a,5,3);用一個(gè)已創(chuàng)建的字符串創(chuàng)建另一個(gè)字符串,如:創(chuàng)建字符串對(duì)象使用String類(lèi)常用方法publicintlength()
獲取字符串的長(zhǎng)度
publicbooleanequals(Strings)
比較當(dāng)前字符串對(duì)象的實(shí)體是否與參數(shù)指定的字符串s的實(shí)體相同publicbooleanstartsWith(Strings)publicbooleanendsWith(Strings)
判斷當(dāng)前字符串對(duì)象的前綴[后綴]是否是參數(shù)指定的字符串spublicintcompareTo(Strings)
比較大小[等0;大正;小負(fù)]String類(lèi)常用方法publicintlength()Strings1=newString(“中國(guó).四川”);Strings2=newString(“中國(guó).四川”);Strings3=newString(“中國(guó)”);Strings4=newString(“四川”);System.out.println(s1.length());//?System.out.println(s3.length());//?System.out.println(s1==s2);//?System.out.println(s1.equals(s2));//?System.out.println(s1=s2);//?System.out.println(s1==s2);//?System.out.println(s1.equals(s2));//?System.out.println(s1.startsWith(s3));//?System.out.println(s1.endsWith(s4));//?System.out.println(pareTo(s2));//?System.out.println(pareTo(s4));//?52falsetrue中國(guó).四川truetruetruetrue0-2222Strings1=newString(“中國(guó).四川”);JAVA程序設(shè)計(jì)2006.02BySCEMIXMJString類(lèi)常用方法publicintindexOf(Strings[,intstartpoint])publicintlastIndexOf(Strings)
返回首次出現(xiàn)s的位置。[沒(méi)有-1]。publicStringsubstring(intstartpoint[,intend])
從start處截取到尾部[end處]所得到的字符串。publicStringtrim()
去掉前后空格publicStringreplaceAll(Stringold,Stringnew)
用參數(shù)new指定的字符串替換由old指定的所有字符串publiccharcharAt(intindex)
返回第index個(gè)字符JAVA程序設(shè)計(jì)2006.02BySCEMIXMJSStrings1=newString(“中國(guó).四川.攀枝花”);Strings2=newString(“WearelikeJava”);System.out.println(s1.indexOf(“china”));//對(duì)?System.out.println(s2.indexOf(‘a(chǎn)’));//對(duì)?System.out.println(s2.indexOf(“a”));//?System.out.println(s2.lastIndexOf(“a”));//?System.out.println(s2.indexOf(“a”,6));//?System.out.println(s2.indexOf(“Java”));//?System.out.println(s1.charAt(6));//?System.out.println(s2.charAt(12));//?System.out.println(s1.substring(3));//?System.out.println(s1.substring(3,5));//?System.out.println(s1.replaceAll(‘.’,‘,’));//對(duì)?System.out.println(s1.replaceAll(“.”,“#”));//?System.out.println(s2.replaceAll(“a”,“b”));//? -1 3 3 15 13 12
攀
J
四川.攀枝花四川語(yǔ)法錯(cuò)#########WebrelikeJbvbStrings1=newString(“中國(guó).四川.攀枝字符串與基本數(shù)據(jù)的相互轉(zhuǎn)換將基本類(lèi)型數(shù)據(jù)轉(zhuǎn)換為String型:
String.valueOf(基本數(shù)據(jù)類(lèi)型)
例:String.valueOf(0.34)“0.34”將String型轉(zhuǎn)換為基本類(lèi)型數(shù)據(jù):[03-18提及]Integer.parseInt(Strings)
……Double.parseDouble(Strings)例:Double.parseDouble(“12.34”)12.34對(duì)象的字符串表示對(duì)象名.toString()Datedate=newDate()date.toString()字符串與基本數(shù)據(jù)的相互轉(zhuǎn)換將基本類(lèi)型數(shù)據(jù)轉(zhuǎn)換為String型JAVA程序設(shè)計(jì)StringBuffer類(lèi)創(chuàng)建StringBuffe對(duì)象StringBuffer()StringBuffer(intsize)StringBuffer(Strings)length()
字符個(gè)數(shù)StringBuffersb=newStringBuffer()sb.length()//0StringBuffersb=newStringBuffer(32)sb.length()//0sb.capacity()//32StringBuffersb=newStringBuffer(“SCEMIXMJa”)sb.length()//9sb.capacity()//25=9+16JAVA程序設(shè)計(jì)StringBuffer類(lèi)創(chuàng)建StringBStringBuffer類(lèi)常用方法voidsetCharAt(intn,charch)
用字符ch替換第n個(gè)字符StringBufferinsert(intindex,Stringstr)
將字符串str插入從index起的當(dāng)前字符串中append
[數(shù)據(jù)轉(zhuǎn)化后]追加publicStringBufferreverse()
字符翻轉(zhuǎn)StringBufferdelete(intstartpos,intendpos)
刪除startpos到endpos-1子串StringBufferreplace(intn,intm,Stringstr)
用串str替換當(dāng)前串從n到m-1的子串StringBuffer類(lèi)常用方法voidsetCharAStringBufferstr=newStringBuffer(“123”)str.append(456);//對(duì)嗎?str=str+“789”//對(duì)嗎?str.append(“789”);//str?System.out.println(str.setCharAt(0,‘a(chǎn)’));//錯(cuò)voidstr.setCharAt(0,'a');//str?System.out.println(str);//??str.insert(1,“***”);//str?str.delete(1,4);//str?str.reverse();//str?str.replcae(0,2,“###”);//對(duì)嗎?str.replcae(5,7,“##”);//str?str.length()//?str.capacity()//?對(duì)str=“123456”錯(cuò)str=“12346789”str=“a2346789”str=“a***23456789”str=“a23456789”str=“98765432a”對(duì)str=“###765432a”str=“###76##32a”1019StringBufferstr=newStringBuf2006.02BySCEMIXMJStringTokenizer類(lèi)分解字符串成可被獨(dú)立使用的單詞[java.util包]創(chuàng)建StringTokenizer對(duì)象
StringTokenizer(Strings)StringTokenizer(Strings,Stringdelim)StringTokenizer類(lèi)常用方法
countTokens() 單詞計(jì)數(shù)變量hasMoreTokens() countTokens>0truenextToken() 逐個(gè)獲取單詞2006.02BySCEMIXMJStringTokimportjava.util.*;publicclassST{publicstaticvoidmain(String[]args){Stringstr=“中國(guó).四川.攀枝花”;StringTokenizerst=newStringTokenizer(str,“.”);intnumber=st.countTokens();System.out.println(“共有單詞:”+number);while(st.hasMoreTokens()){System.out.print(number-st.countTokens()+“:”);System.out.println(st.nextToken());}}}共有單詞:30:中國(guó)
1:四川
2:攀枝花importjava.util.*;共有單詞:3字符串?dāng)?shù)組字符串?dāng)?shù)組:可以表示一組字符串publicclassStrArray{publicstaticvoidmain(String[]args){for(inti=0;i<args.length;i++) System.out.println(args[i]);}}javacStrArray.javajavaStrArray1st2nd3rd字符串?dāng)?shù)組字符串?dāng)?shù)組:可以表示一組字符串publiccla集合類(lèi)狹義來(lái)講,集合實(shí)際上是用一個(gè)數(shù)組代表一組對(duì)象,在集合中的每一個(gè)對(duì)象稱為一個(gè)元素。在集合中的各個(gè)元素的具體類(lèi)型可以不同,一般說(shuō)來(lái),它們都是由相同的類(lèi)派生出來(lái)的,換言之,它們將其當(dāng)作Object類(lèi)型處理(Object類(lèi)型是Java中所有類(lèi)的“根”類(lèi))。在集合中檢索出各個(gè)元素以后,一般來(lái)講需要根據(jù)具體類(lèi)型的不同而進(jìn)行相應(yīng)的類(lèi)型轉(zhuǎn)換。集合類(lèi)狹義來(lái)講,集合實(shí)際上是用一個(gè)數(shù)組代表一組對(duì)象,在集合中CollectionAPI中的接口和類(lèi)主要位于java.util包中,其中最主要的接口是Collection,它將一組對(duì)象以集合元素的形式組織到一起,然后在其子接口中分別實(shí)現(xiàn)不同的組織方式。它的子接口有:Set:不記錄元素的保存順序,且不允許有重復(fù)的元素。List:記錄元素的保存順序,且允許有重復(fù)的元素。其中,實(shí)現(xiàn)Set接口的比較重要的類(lèi)是HashSet;實(shí)現(xiàn)List接口的重要的類(lèi)有ArrayList,Vector,LinkedList。CollectionAPI中的接口和類(lèi)主要位于java.uCollectionAPI層次結(jié)構(gòu)<<interface>>Collection+add(element:Object):boolean+remove(element:Object):boolean+size():int+isEmpty():boolean+contains(element:Object):boolean+iterator():Iterator<<interface>>SetHashSet<<interface>>ListArrayListVectorCollectionAPI層次結(jié)構(gòu)<<interfac集合類(lèi)Collection的方法Publicbooleanadd(Objecto);Publicbooleanremove(Objecto);Publicvoidclear();Publicbooleancontains(Objecto);Publicintsize();PublicbooleanisEmpty();PublicIteratoriterator();
集合類(lèi)Collection的方法集合類(lèi)Set接口以及HashSet類(lèi)Set接口是Collection的子接口,擁有與Collection完全相同的接口,它沒(méi)有什么額外的功能。完全就是一個(gè)Collection,只是具有不同的行為而HashSet是實(shí)現(xiàn)Set接口的一個(gè)類(lèi)。Set記錄的是不重復(fù)元素的集合。它里面也可以包含null對(duì)象,但一樣不可以重復(fù)。集合類(lèi)Set接口以及HashSet類(lèi)集合類(lèi)List接口及ArrayList,Vector類(lèi)
List接口也是Collection的子類(lèi),它表示對(duì)象可重復(fù)的集合。對(duì)于實(shí)現(xiàn)List接口的比較重要的類(lèi)有:ArrayList,Vector,LinkedList。ArrayList、Vector可以說(shuō)是java中的“動(dòng)態(tài)數(shù)組”。數(shù)組在用new創(chuàng)建后,其大小是不能改變的,而ArrayList和Vector中的元素的個(gè)數(shù)是可變的,可以隨時(shí)添加和刪除。集合類(lèi)List接口及ArrayList,Vector類(lèi)Iterator接口Iterator接口定義了對(duì)Collection類(lèi)型對(duì)象中所含元素的遍歷等增強(qiáng)處理功能可以通過(guò)Collection接口中定義的iterator()方法獲得一個(gè)對(duì)應(yīng)的Iterator(實(shí)現(xiàn)類(lèi))對(duì)象Set(實(shí)現(xiàn)類(lèi))對(duì)象對(duì)應(yīng)的Iterator仍然是無(wú)序的List(實(shí)現(xiàn)類(lèi))對(duì)象對(duì)應(yīng)的ListIterator對(duì)象可以實(shí)現(xiàn)對(duì)所含元素的雙向遍歷:使用next()方法和previous()方法Iterator接口Iterator接口定義了對(duì)CollecIterator接口層次<<interface>>Iterator+hasNext():boolean+next():boolean+remove()<<interface>>ListIterator+hasPrevious():boolean+previous():Object+add(element:Object)+set(element:Object)Iterator接口層次<<interface>>+hasN集合類(lèi)Iterator和Enumeration存取集合中的元素可以有多種方法。對(duì)于ArrayList和Vector類(lèi),他們的元素與位置有關(guān),所以可以用與位置相關(guān)的方法來(lái)取得元素。所有的Collection都可以用Iterator來(lái)列舉元素,Vector類(lèi)可以用Enumeration來(lái)列舉元素。前者中還有remove方法可用,所以功能更多。
AnIteratorisanobjectthatmovessequentiallyfromonecomponenttothenextthroughacollectionstructure,providingaccesstoitselements.集合類(lèi)Iterator和Enumeration集合類(lèi)使用Iterator接口很常見(jiàn)。對(duì)于實(shí)現(xiàn)Collection接口的類(lèi),都可以用。Iterator的方法有三個(gè):PublicbooleanhasNext();PublicObjectnext();Publicremove();對(duì)于List,可以通過(guò)方法:listIterator()來(lái)得到一個(gè)ListIterator接口,從而取得元素的索引。ListIterator是Iterator的子接口,出上面三個(gè)方法外,還有:集合類(lèi)使用Iterator接口很常見(jiàn)。對(duì)于實(shí)現(xiàn)Collect集合類(lèi)booleanhasPrevious();Objectprevious();voidadd(Objecto);voidset(Objecto);等等對(duì)于Vector類(lèi),可以使用elements()方法返回一個(gè)
Enumeration接口,其方法有:
booleanhasMoreElements();ObjectnextElement();(舉例)集合類(lèi)booleanhasPrevious();例7-11importjava.util.*;publicclassTestListAllElements{ publicstaticvoidmain(String[]args) { Vectorh=newVector(); h.add("lst"); h.add("java"); h.add("c"); h.add("basic"); printAll((Object)h); printAll((Collection)h); printAll((List)h); printAll((Vector)h);
}publicstaticvoidprintAll(Objectobj){ System.out.println(obj);}例7-11importjava.util.*;publicstaticvoidprintAll(Collections) { Iteratorit=s.iterator(); while(it.hasNext()) {System.out.println(it.next());} }publicstaticvoidprintAll(Lists) { ListIteratorit=s.listIterator(); while(it.hasNext()) { System.out.println(it.next()); }while(it.hasPrevious()) { System.out.println(it.previous()); }} publicstaticvoidprintAll(Vectors) { Enumeratione=s.elements(); while(e.hasMoreElements()) { System.out.println(e.nextElement()); } }}publicstaticvoidprintAll(Co集合類(lèi)Map接口及Hashtable類(lèi)Map接口提供了一組“關(guān)鍵字-值”的集合。Atable(alsocalledmap)isacontainerthatallowsdirectaccessbyanyindextype.agoodanalogyisadictionary;theindexvariableisthewordbeinglookedup,andtheelementthatitindexesisitsdictionarydefinition.Atableisasequenceofpairs.Thefirstcomponentofthepairiscalledkey.Thesecondcomponentiscalledthevalueofitskeycomponent.Atableisalsocalledamapbecausewethinkofthekeysbeingmappedintotheirvalues,likeamathematicalfunction:f(key)=value.集合類(lèi)Map接口及Hashtable類(lèi)集合類(lèi)Map接口及Hashtable類(lèi)Map接口的重要實(shí)現(xiàn)類(lèi)有:Hashtable類(lèi)。Hashtable中的每個(gè)關(guān)鍵字的元素都實(shí)現(xiàn)了hashCode()方法,為每一個(gè)元素返回一個(gè)對(duì)應(yīng)的值。該類(lèi)的主要方法有:
publicvoidput(Objectkey,Objectvalue);publicObjectget(Objectkey);publicObjectremove(Objectkey);publicEnumerationkyes();集合類(lèi)Map接口及Hashtable類(lèi)例7-12importjava.util.*;classTestHashtable{ publicstaticvoidmain(String[]args) { Hashtableht=newHashtable(); ht.put("one",newInteger(1)); ht.put("two",newInteger(2)); ht.put("three",newInteger(3)); ht.put("four",newInteger(4)); ht.put("five",newInteger(5)); Enumerationem=ht.keys(); while(em.hasMoreElements()) {Objectkey=em.nextElement(); Objectvalue=ht.get(key); System.out.println(""+key+"="+value); } }}例7-12importjava.util.*;7.7.1泛型泛型(Generic)是JDK5.0增加的最重要的Java語(yǔ)言特性。使用泛型可以解決這種問(wèn)題:程序可以針對(duì)不同的類(lèi)有相同的處理辦法,但這些類(lèi)之間不一定有繼承關(guān)系。Vector<String>v=newVector<String>();v.addElement(“one”);Strings=v.elementAt(0);7.7.1泛型泛型(Generic)是JDK5.0增加的7.7.2增強(qiáng)的for語(yǔ)句for(Photophoto:album){ System.out.println(photo.toString());}7.7.2增強(qiáng)的for語(yǔ)句for(Photophotimportjava.util.*;classStudent{ Stringname; intage; publicStudent(Stringname,intage) {=name; this.age=age; } publicvoidprintInfo(){System.out.println("name:"+name+"age:"+age);}}importjava.util.*;classEnrollmentCollection{ privateVectorstudents;
EnrollmentCollection() { students=newVector(); }publicbooleanenroll(Students) { if(students.contains(s))returnfalse; if(students.size()>8) returnfalse; students.add(s); returntrue; }publicbooleanunenroll(Students){if(students.contains(s)) {students.remove(s); returntrue;} else returnfalse; } publicintgetTotalEnrollment() { returnstudents.size();} publicStudentgetNthStudent(intn) {return(Student)students.elementAt(n);}
};
classEnrollmentCollection{classCourse{ StringcourseName; doublecredits; privateEnrollmentCollectionenrolledStudents; Course(Stringname,doublecredits) {courseName=name; this.credits=credits; enrolledStudents=newEnrollmentCollection(); } publicbooleanenroll(Students) { returnenrolledStudents.enroll(s); } publicbooleanunenroll(Students){ returne
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度文化旅游產(chǎn)業(yè)股權(quán)投資與品牌運(yùn)營(yíng)合同
- 2025年度股東間綠色環(huán)保項(xiàng)目借款合同規(guī)范
- 2025年度互聯(lián)網(wǎng)數(shù)據(jù)中心設(shè)備采購(gòu)與服務(wù)合同樣本
- 漯河2024年河南漯河市第三人民醫(yī)院(漯河市婦幼保健院)招聘9人筆試歷年參考題庫(kù)附帶答案詳解
- 深圳廣東深圳市第一職業(yè)技術(shù)學(xué)校招聘購(gòu)買(mǎi)教育服務(wù)教師筆試歷年參考題庫(kù)附帶答案詳解
- 漢中2025年陜西漢中市中心醫(yī)院招聘19人筆試歷年參考題庫(kù)附帶答案詳解
- 昆明2025年云南昆明市盤(pán)龍區(qū)婦幼保健院招聘編外口腔醫(yī)師筆試歷年參考題庫(kù)附帶答案詳解
- 廣西2025年廣西安全工程職業(yè)技術(shù)學(xué)院招聘10人筆試歷年參考題庫(kù)附帶答案詳解
- 2025年縮水鋼角尺項(xiàng)目可行性研究報(bào)告
- 2025年皮帶傳動(dòng)手控項(xiàng)目可行性研究報(bào)告
- 工廠主文件(新)
- 儀表基礎(chǔ)知識(shí)培訓(xùn).ppt課件
- 數(shù)據(jù)結(jié)構(gòu)英文教學(xué)課件:chapter2 Array
- 20以內(nèi)分成表算式x
- 井下探放水設(shè)計(jì)編制培訓(xùn)PPT課件
- 數(shù)據(jù)結(jié)構(gòu)英文教學(xué)課件:chapter9 Sorting
- 營(yíng)養(yǎng)學(xué)緒論(精)
- 最新ICD-9手術(shù)編碼
- 軟件項(xiàng)目報(bào)價(jià)方法參考模板
- 國(guó)際形式發(fā)票模板
- 陜西延長(zhǎng)石油(集團(tuán))有限責(zé)任公司企業(yè)年金方案
評(píng)論
0/150
提交評(píng)論