版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
Java面向?qū)ο蟪绦蛟O(shè)計常用類和集合教學(xué)內(nèi)容掌握J(rèn)ava系統(tǒng)包中String、StringBuffer等常用的類的應(yīng)用掌握Collection、List和Set集合接口的應(yīng)用常用類
常用類是在我們學(xué)習(xí)和開發(fā)Java程序中,常常用到的類,例如:字符與不同數(shù)據(jù)之間的轉(zhuǎn)換,隨機數(shù)等,這些類Java系統(tǒng)中提供的。本小節(jié)我們將學(xué)幾個主要的常用類。String類1、String類中的常用構(gòu)造方法如表5.1所示:表5.1構(gòu)造方法主要功能publicString()創(chuàng)建一個空的字符串對象。publicString(byte[]bytes)通過byte數(shù)組構(gòu)造字符串對象。publicString(char[]value,intoffset,intcount)從字符數(shù)組的第offset位將字符串的count個字節(jié)轉(zhuǎn)化為字符串(從0開始計數(shù))。publicString(StringBufferbuffer)通過StringBuffer數(shù)組構(gòu)造字符串對象。【例5-1】:通過案例來掌握String類的常用構(gòu)造方法publicclassDemo5_01{ publicstaticvoidmain(String[]args){ byte[]b={'a','b','c','d','e','f','g','h'}; char[]c={'0','1','2','3','4','5','6','7','8','9'}; Stringsb=newString(b); Stringsb_b=newString(b,2,4); Stringsc=newString(c); Stringsc_c=newString(c,2,4); Stringsb_copy=newString(sb); System.out.println("sb:"+sb); System.out.println("sb_b:"+sb_b); System.out.println("sc:"+sc); System.out.println("sc_c:"+sc_c); System.out.println("sb_copy:"+sb_copy); }}程序運行結(jié)果:1、String類中常用的方法如表5.2所示:表5.2方法主要功能publiccharcharAt(intindex)取字符串中的某一個字符,其中的參數(shù)index指的是字符串中序數(shù)。字符串的序數(shù)從0開始到length()-1publicintcompareTo(StringanotherString)當(dāng)前String對象與anotherString比較。相等關(guān)系返回0;不相等時,從兩個字符串第0字符開始比較,返回第一個不相等的字符差,另一種情況,較長字符串的前面部分恰巧是較短的字符串,返回它們的長度差publicStringconcat(Stringstr)將該String對象與str連接在一起publicbooleanendsWith(Stringsuffix)該String對象是否以suffix結(jié)尾publicbooleanequals(ObjectanObject)當(dāng)anObject不為空并且與當(dāng)前String對象一樣,返回true;否則,返回falsepublicvoidgetChars(intsrcBegin,intsrcEnd,char[]dst,intdstBegin)該方法將字符串拷貝到字符數(shù)組中。其中,srcBegin為拷貝publicintindexOf(Stringstr)從左到右配字符串位置publicintindexOf(Stringstr,intfromIndex)從fromIndex開始從左到右配字符串位置publicintlastIndexOf(Stringstr)從右到左找第一個匹配字符串位置publicintlastIndexOf(Stringstr,intfromIndex)從fromIndex開始從右到左找第一個匹配字符串位置public.intlength()返回當(dāng)前字符串長度publicbooleanstartsWith(Stringprefix)該String對象是否以prefix開始publicbooleanstartsWith(Stringprefix,inttoffset)該String對象從toffset位置算起,是否以prefix開始publicStringsubstring(intbeginIndex)取從beginIndex位置開始到結(jié)束的子字符串publicStringsubstring(intbeginIndex,intendIndex)取從beginIndex位置開始到endIndex位置的子字符串publicchar[]toCharArray()將該String對象轉(zhuǎn)換成char數(shù)組【例5-2】:通過案例來掌握String類的常用方法publicclassDemo5_02{ publicstaticvoidmain(Stringarg[]){ Strings1="abcdefghijklmn"; charc1=s1.charAt(2); intcompareTo=pareTo("bcdl"); Stringconcat=s1.concat("ABCD"); booleanendsWith1=s1.endsWith("mn"); booleanendsWith2=s1.endsWith("m"); booleanequals=s1.equals("abcdefghijklmn"); Strings2="abcdefabcdefabcdef"; intindexOf1=s2.indexOf("de"); intindexOf2=s2.indexOf("de",6); intlastIndexOf1=s2.lastIndexOf("cd"); intlastIndexOf2=s2.lastIndexOf("cd",11); intlength=s2.length(); booleanstartsWith1=s2.startsWith("ab"); booleanstartsWith2=s2.startsWith("ab",6); Stringsubstring1=s2.substring(6); Stringsubstring2=s2.substring(6,6); char[]c2=s1.toCharArray(); System.out.println("c1="+c1); System.out.println("compareTo="+compareTo); System.out.println("concat="+concat); System.out.println("endsWith1="+endsWith1); System.out.println("endsWith2="+endsWith2); System.out.println("equals="+equals); System.out.println("indexOf1="+indexOf1); System.out.println("indexOf2="+indexOf2); System.out.println("lastIndexOf1="+lastIndexOf1); System.out.println("lastIndexOf2="+lastIndexOf2); System.out.println("length="+length); System.out.println("startsWith1="+startsWith1); System.out.println("startsWith2="+startsWith2); System.out.println("substring1="+substring1); System.out.println("substring2="+substring2); for(charc:c2){ System.out.print(c+"");}}}程序運行結(jié)果:將int、char、boolean、long、float和double六種類型的變量轉(zhuǎn)換為String類型的對象。publicstaticStringvalueOf(inti)publicstaticStringvalueOf(booleanb)publicstaticStringvalueOf(charc)publicstaticStringvalueOf(doubled)publicstaticStringvalueOf(floatf)publicstaticStringvalueOf(longl)publicstaticStringvalueOf(Objectobj)將String類型的對象轉(zhuǎn)換為int、char、boolean、long、float和double六種類型的變量。publicstaticintparseInt(Strings); Integer.parseInt(s); publicstaticbyteparseByte(Strings); Byte.parseByte(s); publicstaticshortparseShort(Strings); Short.parseShort(s); publicstaticlongparseLong(Strings); Long.parseLong(s); publicstaticfloatparseFloat(Strings); Float.parseFloat(s); publicstaticdoubleparseDouble(Strings); Double.parseDouble(s);StringBuffer類當(dāng)對字符串進行修改的時候,需要使用StringBuffer類。和String類不同的是,StringBuffer類的對象能夠被多次的修改,并且不產(chǎn)生新的未使用對象。StringBuffer可以完成完成字符串的動態(tài)添加、插入和替換等操作。StringBuffer類的造方法如表5.3所示:表5.3構(gòu)造方法主要功能PublicStringBuffer()無參構(gòu)造方法PublicStringBuffer(intcapacity)指定容量的字符串緩沖區(qū)對象PublicStringBuffer(Stringstr)指定字符串內(nèi)容的字符串緩沖區(qū)對象
StringBuffer類的常用方法如表5.4所示:表5.4方法主要功能PublicsubString(intstart)返回一個新的String,它包含此序列當(dāng)前所包含的字符子序列。PubliccharcharAt(intindex)返回此序列中指定索引處的char值Publicappend(Stringstring)將參數(shù)里指定的內(nèi)容追加到此序列中PubliccharcharAt(intindex)返回此序列中指定索引處的char值Publicdelete(intstart,intend)移除此序列的子字符串中的字符。PublicdeletecharAt(intindex)移除此序列指定位置的char。Publicinsert(intoffset,str)表示將括號里的某種數(shù)據(jù)類型的變量插入某一序列中PublicStringBufferreplace(intstart,intend,Stringstr)用指定的String中的字符替換此序列的子字符串中的StringPublicStringtoString()返回表示此順序中的數(shù)據(jù)的字符串。Publicintlength()返回長度(字符數(shù))?!纠?-3】:通過案例來掌握StringBuffer類的常用方法publicclassDemo5_03{ publicstaticvoidmain(String[]args){ System.out.println("test1:"); test1(); System.out.println("test2:"); test2(); System.out.println("test3:"); test3(); System.out.println("test4:"); test4(); System.out.println("test5:"); test5(); System.out.println("test6:"); test6(); }publicstaticvoidtest1(){StringBuffersb=newStringBuffer();sb.append("ThisisaStringBuffer");System.out.print("sb.substring(4)="+sb.substring(4));System.out.println("sb.substring(4,9)="+sb.substring(4,9));}publicstaticvoidtest2(){StringBuffersb=newStringBuffer("ThisisaStringBuffer");System.out.println(sb.charAt(sb.length()-1));}publicstaticvoidtest3(){StringBuffersb=newStringBuffer("ThisisaStringBuffer!");sb.delete(0,5);sb.deleteCharAt(sb.length()-1);System.out.println(sb.toString());}publicstaticvoidtest4(){StringBuffersb=newStringBuffer("ThisisaStringBuffer!");sb.insert(1,'W');sb.insert(2,newchar[]{'A','B','C'});sb.insert(8,"abc");sb.insert(6,8);sb.insert(2,true);System.out.println("Insert:"+sb.toString());}publicstaticvoidtest5(){StringBuffersb=newStringBuffer("ThisisaStringBuffer!");sb.replace(10,sb.length(),"Integer");System.out.println("Replace:"+sb.toString());}publicstaticvoidtest6(){StringBuffersb=newStringBuffer("ThisisaStringBuffer!");System.out.println(sb.reverse());}}程序運行結(jié)果:Math類Math類本身不是靜態(tài)的,但它的方法以及成員變量都是靜態(tài)的。Math類的常用方法如表5.5所示:表5.5方法主要功能publicstaticdoubleabs(doublea)返回一個參數(shù)的絕對值publicstaticdoublecbrt(doublea)返回參數(shù)的立方根publicstaticdoubleceil(doublea)返回大于或等于參數(shù)的最?。ㄗ罱咏?fù)無窮大)double值,并等于數(shù)學(xué)整數(shù)publicstaticdoublefloor(doublea)返回小于或等于參數(shù)的最大(最接近正無窮大)double值,等于數(shù)學(xué)整數(shù)publicstaticdoublemax(doublea,doubleb)返回兩個參數(shù)值中的較大值publicstaticdoublemin(doublea,doubleb)返回兩個參數(shù)的較小值publicstaticdoublepow(doublea,doubleb)將第一個參數(shù)的第二個參數(shù)次冪publicstaticdoublerandom()返回一個double值為正號,大于等于0.0,小于1.0(偽隨機選擇的)publicstaticdoublerint(doublea)返回與a最接近值的double值,等于數(shù)學(xué)整數(shù)(注意.5的時候會取偶數(shù))publicstaticdoublesqrt(doublea)返回a的正平方根【例5-4】:通過案例來掌握Math類的常用方法publicclassDemo5_04{ publicstaticvoidmain(String[]args){System.out.print("01abs="+Math.abs(-20.1)+"");System.out.println("02abs="+Math.abs(20.1)+"");System.out.print("03ceil="+Math.ceil(-20.2)+"");System.out.print("04ceil="+Math.ceil(20.8)+"");System.out.print("05ceil="+Math.ceil(-0.8)+"");System.out.print("06ceil="+Math.ceil(0.0)+"");System.out.println("07ceil="+Math.ceil(-0.0)+"");System.out.print("08floor="+Math.floor(-60.2)+"");System.out.print("09floor="+Math.floor(60.8)+"");System.out.print("10floor="+Math.floor(-0.8)+"");System.out.print("11floor="+Math.floor(0.0)+"");System.out.println("12floor="+Math.floor(-0.0)+"");System.out.print("13max="+Math.max(-60.1,-50)+"");System.out.print("14max="+Math.max(50.7,50)+"");System.out.println("15max="+Math.max(0.0,-0.0)+"");System.out.print("16min="+Math.min(-60.1,-50)+"");System.out.print("17min="+Math.min(50.7,50)+"");System.out.println("18min="+Math.min(0.0,-0.0)+"");System.out.print("19random="+Math.random()+"");System.out.println("20random="+Math.random()+"");System.out.print("21rint="+Math.rint(80.2)+"");System.out.print("22rint="+Math.rint(80.8)+"");System.out.print("23rint="+Math.rint(81.5)+"");System.out.print("24rint="+Math.rint(80.5)+"");System.out.println("25rint="+Math.rint(80.51)+"");System.out.print("26rint="+Math.rint(-80.5)+"");System.out.print("27rint="+Math.rint(-81.5)+"");System.out.print("28rint="+Math.rint(-80.51)+"");System.out.print("29rint="+Math.rint(-80.6)+"");System.out.println("30rint="+Math.rint(-80.2)+"");System.out.print("31round="+Math.round(80.2)+"");System.out.print("32round="+Math.round(80.8)+"");System.out.print("33round="+Math.round(80.5)+"");System.out.print("34round="+Math.round(80.51)+"");System.out.println("35round="+Math.round(-80.5)+"");System.out.print("36round="+Math.round(-80.51)+"");System.out.print("37round="+Math.round(-80.6)+"");System.out.println("38round="+Math.round(-80.2)+"");System.out.print("39cbrt="+Math.cbrt(36)+"");System.out.print("40sqrt="+Math.sqrt(8)+""); }}程序運行結(jié)果:Random類Random類的實例用于生成偽隨機數(shù)的流。Random類的構(gòu)造方法如表5.6所示:表5.6構(gòu)造方法主要功能PublicRandom()該構(gòu)造方法使用一個和當(dāng)前系統(tǒng)時間對應(yīng)的相對時間有關(guān)的數(shù)字作為種子數(shù),然后使用這個種子數(shù)構(gòu)造Random對象。PublicRandom(longseed)該構(gòu)造方法可以通過制定一個種子數(shù)進行創(chuàng)建,種子數(shù)只是隨機算法的起源數(shù)字,和生成的隨機數(shù)字的區(qū)間無關(guān)。
Random類的常用方法如表5.7所示:表5.7方法主要功能protectedintnext(intbits)生成下一個偽隨機數(shù)。當(dāng)被所有其他方法使用時,子類應(yīng)該重寫此方法publicintnextInt()返回下一個偽隨機數(shù),它是此隨機數(shù)生成器的序列中均勻分布的int值。nextInt的常規(guī)協(xié)定是,偽隨機地生成并返回一個int值。所有232個可能int值的生成概率(大致)相同publicfloatnextFloat()返回下一個偽隨機數(shù),它是取自此隨機數(shù)生成器序列的、在0.0和1.0之間均勻分布的float值publicdoublenextDouble()返回下一個偽隨機數(shù),它是取自此隨機數(shù)生成器序列的、在0.0和1.0之間均勻分布的double值【例5-5】:通過案例來掌握Random類的常用方法importjava.util.Random;publicclasstext5_5{ publicstaticvoidmain(String[]args){ Randomrand1=newRandom();Randomrand2=newRandom(20);for(inti=0;i<10;i++){ intm=rand1.nextInt(20);intn=rand2.nextInt(20);System.out.println("第"+(i+1)+"次m="+m+",n="+n);} }}程序運行結(jié)果:Date類我們經(jīng)常要處理有關(guān)日期和時間的信息,這時候你可以使用java.util中的Date類,Date類并不僅僅表示日期,而是精確到毫秒。此外,由于在java.sql中存在一個同名的Date類,此類是用來描述數(shù)據(jù)庫中的時間字段
1、Date的常用構(gòu)造方法如表5.8所示:表5.8構(gòu)造方法主要功能publicDate()構(gòu)造一個Date對象并對其進行初始化以反映當(dāng)前時間publicDate(longdate)構(gòu)造一個Date對象,并根據(jù)相對于GMT1970年1月1日00:00:00的毫秒數(shù)對其進行初始化
2、Date的常用的方法如表5.9所示:表5.9方法主要功能publicbooleanbefore(Datewhen)測試此日期是否在指定日期之前publicbooleanafter(Datewhen)測試此日期是否在指定日期之后publiclonggetTime()返回自1970年1月1日以來,由Date對象表示的00:00:00GMT的毫秒數(shù)publicvoidsetTime(longtime)按照相對于GMT1970年1月1日00:00:00的毫秒數(shù)設(shè)置這個Date對象publicintcompareTo(DateanotherDate)比較兩個日期進行訂購publicStringtoString()格式化日期轉(zhuǎn)義格式y(tǒng)yyy-mm-dd
【例5-6】:通過案例來掌握Date類的常用方法importjava.util.Date;publicclassDemo5_06{ publicstaticvoidmain(String[]args){ Datedate=newDate(); System.out.println("toString:"+date.toString()); System.out.println("getTime:"+date.getTime()); date.setTime(999101585); System.out.println("toString:"+date.toString()); System.out.println("getTime:"+date.getTime()); }}程序運行結(jié)果:Vector類Vector的構(gòu)造方法如表5.10所示:表5.10構(gòu)造方法主要功能publicVector()構(gòu)造一個空向量,使其內(nèi)部數(shù)據(jù)數(shù)組的大小為10,標(biāo)準(zhǔn)容量增量為零publicVector(intinitialCapacity)構(gòu)造一個空向量,使其內(nèi)部數(shù)據(jù)數(shù)組的大小為10,其標(biāo)準(zhǔn)容量增量為零publicVector(intinitialCapacity,intcapacityIncrement)使用指定的初始容量和容量增量構(gòu)造一個空的向量
Vector類的常用方法如表5.11所示:表5.11方法主要功能publicbooleanadd(Ee)將指定的元素追加到此Vector的末尾publicvoidadd(intindex,Eelement)在此Vector中的指定位置插入指定的元素publicvoidclear()從此Vector中刪除所有元素。此調(diào)用返回后,Vector將為空(除非引發(fā)異常)publicbooleanremoveAll(Collection<?>c)從此Vector中刪除指定集合中包含的所有元素publicintindexOf(Objecto)返回此向量中指定元素的第一次出現(xiàn)的索引,如果此向量不包含元素,則返回-1publicintindexOf(Objecto,intindex)返回此向量中指定元素的第一次出現(xiàn)的索引,從index向前index,如果未找到該元素,則返回-1。publicintlastIndexOf(Objecto)返回此向量中指定元素的最后一次出現(xiàn)的索引,如果此向量不包含元素,則返回-1publicintlastIndexOf(Objecto,intindex)返回此向量中指定元素的最后一次出現(xiàn)的索引,從index,如果未找到該元素,則返回-1publicintsize()返回此向量中的組件數(shù)publicvoidsetSize(intnewSize)設(shè)置此向量的大小publicEget(intindex)返回此向量中指定位置的元素【例5-7】:通過案例來掌握Vector類的常用方法importjava.util.Vector;publicclassDemo5_07{ publicstaticvoidmain(String[]args) { Vectorv=newVector(4); v.add("ABC"); v.add("def"); v.add("ghi"); v.add("jkl"); v.add("mno"); intsize1=v.size(); System.out.println("size1:"+size1); for(inti=0;i<v.size();i++) { System.out.print(i+":"+v.get(i)+""); }System.out.println(); v.remove("jkl"); v.remove(0); intsize2=v.size(); System.out.println("size2:"+size2); for(inti=0;i<v.size();i++) { System.out.print(i+":"+v.get(i)+""); } }}程序運行結(jié)果:集合集合類存放于java.util包中。集合就是存放數(shù)據(jù)的容器,集合類存放的都是對象的引用,而非對象本身,出于表達上的便利,我們稱集合中的對象就是指集合中對象的引用。集合類型主要有3種:set(集)、list(列表)和map(映射)。集合比數(shù)組的優(yōu)勢:1、集合可以存儲任意類型的對象數(shù)據(jù),數(shù)組只能存儲同一種數(shù)據(jù)類型的數(shù)據(jù)。2、集合的長度是會發(fā)生變化的,數(shù)組的長度是固定的。CollectionCollection是一個接口,是高度抽象出來的集合,它包含了集合的基本操作:添加、刪除、清空、遍歷(讀取)、是否為空、獲取大小、是否保護某元素等等。Collection接口的所有子類(直接子類和間接子類)都必須實現(xiàn)2種構(gòu)造函數(shù):不帶參數(shù)的構(gòu)造函數(shù)和參數(shù)為Collection的構(gòu)造函數(shù)。帶參數(shù)的構(gòu)造函數(shù),可以用來轉(zhuǎn)換Collection的類型。在Collection接口之中一共定義了15個方法,在所有的方法之中,只有兩個方法最為常用:add()、iterator()。不過很少會去直接使用Collection,都會使用Collection的兩個子接口:List、Set。Collcetion接口要實現(xiàn)的方法如表5.12所示:表5.12方法主要功能booleanadd(Ee)確保此集合包含指定的元素(可選操作)booleanaddAll(Collection<?extendsE>c)將指定集合中的所有元素添加到此集合(可選操作)voidclear()從此集合中刪除所有元素(可選操作)booleancontains(Objecto)如果此集合包含指定的元素,則返回truebooleancontainsAll(Collection<?>c)如果此集合包含指定集合中的所有元素,則返回truebooleanequals(Objecto)將指定的對象與此集合進行比較以獲得相等性inthashCode()返回此集合的哈希碼值booleanisEmpty()如果此集合不包含元素,則返回trueIterator<E>iterator()返回此集合中的元素的迭代器defaultStream<E>parallelStream()返回可能并行的Stream與此集合作為其來源booleanremove(Objecto)從該集合中刪除指定元素的單個實例(如果存在)(可選操作)booleanremoveAll(Collection<?>c)刪除指定集合中包含的所有此集合的元素(可選操作)defaultbooleanremoveIf(Predicate<?superE>filter)刪除滿足給定謂詞的此集合的所有元素booleanretainAll(Collection<?>c)僅保留此集合中包含在指定集合中的元素(可選操作)intsize()返回此集合中的元素數(shù)defaultSpliterator<E>spliterator()創(chuàng)建一個Spliterator在這個集合中的元素defaultStream<E>stream()返回以此集合作為源的順序StreamObject[]toArray()返回一個包含此集合中所有元素的數(shù)組<T>T[]toArray(T[]a)返回包含此集合中所有元素的數(shù)組;返回的數(shù)組的運行時類型是指定數(shù)組的運行時類型List在實際的應(yīng)用中如果使用到隊列,棧,鏈表,首先可以想到使用List。不同的場景下面使用不同的工具,效率才能更高!List是一個有序,可以方重復(fù)的數(shù)據(jù)的集合。1、當(dāng)集合中對插入元素數(shù)據(jù)的速度要求不高,但是要求快速訪問元素數(shù)據(jù),則使用ArrayList!2、當(dāng)集合中對訪問元素數(shù)據(jù)速度不做要求不高,但是對插入和刪除元素數(shù)據(jù)速度要求高的情況,則使用LinkedList!3、當(dāng)集合中有多線程對集合元素進行操作時候,則使用Vector!但是現(xiàn)在BVector現(xiàn)在一般不再使用,如需在多線程下使用,可以用CopyOnWriteArrayList,在java.util.concurrent包下。4、當(dāng)集合中有需求是希望后保存的數(shù)據(jù)先讀取出來,則使用Stack!按照面向?qū)ο蟮母拍顏碇v,現(xiàn)在使用ArrayList主要的目的是為List接口實例化,所有的操作方法都以List接口為主。List的方法大部分是從Collection繼承而來的。【例5-8】:通過案例來掌握List類的使用方法importjava.util.ArrayList;importjava.util.List;interfaceAnimal{publicStringgetName();publicintgetAge();}classDogimplementsAnimal{privateStringname;privateintage;publicDog(Stringname,intage){=name;this.age=age;}publicStringgetName(){return;}publicintgetAge(){returnthis.age;}publicStringtoString(){return"〖狗的信息〗名字:"+name+",年齡:"+age;}publicbooleanequals(Objectobj){if(this==obj){returntrue;}if(obj==null){returnfalse;}if(!(objinstanceofDog)){returnfalse;}Dogdog=(Dog)obj;if(.equals()&&this.age==dog.age){returntrue;}returnfalse;}}classCatimplementsAnimal{privateStringname;privateintage;publicCat(Stringname,intage){=name;this.age=age;}publicStringgetName(){return;}publiccintgetAge(){returnthis.age;}publicStringtoString(){return"〖貓的的信息〗名字:"+name+",年齡:"+age;}publicbooleanequals(Objectobj){if(this==obj){returntrue;}if(obj==null){returnfalse;}if(!(objinstanceofCat)){returnfalse;}Catc=(Cat)obj;if(.equals()&&this.age==c.age){returntrue;}returnfalse;}}publicclassDemo5_08{ publicstaticvoidmain(Stringargs[]){ List<Animal>zooList=newArrayList<Animal>(); zooList.add(newDog("牧羊犬",1)); zooList.add(newDog("哈巴狗",1)); zooList.add(newDog("泰迪",1)); zooList.add(newDog("哈士奇",1)); zooList.add(newCat("波斯貓",2)); zooList.add(newCat("貍花貓",2)); zooList.add(newCat("黑貓",2)); zooList.remove(newDog("泰迪",1)); for(inti=0;i<zooList.size();i++){ System.out.println(zooList.get(i));}}}程序運行結(jié)果:Set在Collection接口定義了15個常用方法,但是Set子接口并不像List子接口那樣對Collection接口進行了大量的擴充,而是完整的繼承了下來,那么就證明了在Set子接口之中是肯定無法使用get()方法的。Set是一個無序,不允許方重復(fù)的數(shù)據(jù)的集合。無序是指的是存進去時候是一個順序,取出來的時候不一定是這個順序。那么在Set子接口之中常用的兩個子類:HashSet、TreeSet,下面分別說明。HashSetHash(哈希)屬于一種算法,這種算法的核心意義指的是找空保存算法,所以只要一看見hash第一反應(yīng)就是說沒有順序的保存?!纠?-9】:通過案例來掌握HashSet類的使用方法importjava.util.HashSet;importjava.util.Set;publicclassDemo5_09{ publicstaticvoidmain(String[]args)throwsException{ Set<String>set=newHashSet<String>(); set.add("set"); set.add("set"); set.add("hashset"); set.add("hash"); set.add("HashSet"); System.out.println(set); }}程序運行結(jié)果:TreeSet如果現(xiàn)在希望Set集合之中保存的數(shù)據(jù)有順序,那么就通過TreeSet進行Set接口的實例化。【例5-10】:通過案例來掌握TreeSet類的使用方法importjava.util.Set;importjava.util.TreeSet;publicclassDemo5_10{ publicstaticvoidmain(String[]args)throwsException{Set<String>set=newTreeSet<String>();set.add("T");set.add("D");set.add("B");set.add("B");set.add("C");set.add("A");set.add("F");System.out.println(set);}}程序運行結(jié)果:迭代輸出:Iterator但是如何取得Iterator接口的實例化對象呢?這一操作在Collection接口就已經(jīng)明確定義了,因為Collection繼承了一個Iterable接口,在這個接口下定義了一個方法:publicIterator<T>iterator(),取得Iterator接口的實例化對象。Iterator是最為常用的集合輸出接口,在這個接口中一共定義了三個方法,但只有兩個有真正用處,如表5.13所示:表5.13方法主要功能publicbooleanhasNext()判斷是否有下一個元素publicEnext()取得下一個元素【例5-11】:通過案例來掌握Iterator類的使用方法importjava.util.HashSet;importjava.util.Iterator;importjava.util.Set;importjava.util.TreeSet;publicclassDemo5_11{ publicstaticvoidmain(String[]args){ Set<String>set=newHashSet<String>(); set.add("set"); set.add("set"); set.add("hashset"); set.add("hash"); set.add("HashSet"); Iterator<String>iter=set.iterator();while(iter.hasNext()){Stringstr=iter.next();System.out.print(str+"、");}System.out.println();text(); } publicstaticvoidtext(){Set<String>set=newTreeSet<String>();set.add("T");set.add("D");set.add("B");set.add("B");set.add("C");set.add("A");set.add("F");Iterator<String>iter=set.iterator();while(iter.hasNext()){Stringstr=iter.next();System.out.print(str+"、");}}}程序運行結(jié)果:mapMap提供了一種映射關(guān)系,其中的元素是以鍵值對(key-value)的形式存儲的,能夠?qū)崿F(xiàn)根據(jù)key快速查找value;Map中的鍵值對以Entry類型的對象實例形式存在;Map中鍵(key值)不可重復(fù),value值可以重復(fù),一個value值可以和很多key值形成對應(yīng)關(guān)系,每個建最多只能映射到一個值。Map中的常用方法如表5.14所示:表5.14方法主要功能voidclear()從該地圖中刪除所有的映射(可選操作)put(objectkey,objectvalue)要是之前沒有關(guān)于該鍵的映射,在存儲該鍵值對,如果之前已經(jīng)有關(guān)于該鍵的映射,則使用新的值替換舊值keySet()返回map中包含的鍵的set視圖set,可以理解為將map中的所有鍵取出來以set形式存儲remove(Objectkey)如果存在對應(yīng)的鍵值對,則移除鍵值對values()返回map所有的value組成的collection【例5-12】:通過案例來掌握Map類的使用方法importjava.util.HashMap;importjava.util.Map;publicclassDemo5_12{ publicstaticvoidmain(String[]args)throwsException{Map<Integer,String>map=newHashMap<Integer,String>();map.put(1,"a");map.put(null,"空");map.put(2,"c");map.put(3,"d");System.out.println(map.get(1));map.put(1,"b");System.out.println(map.get(1));System.out.println(map.get(null));}}程序運行結(jié)果:比較器Comparable是一個對象本身就已經(jīng)支持自比較所需要實現(xiàn)的接口,如String、Integer自己就實現(xiàn)了Comparable接口,可完成比較大小操作。自定義類要在加入list容器中后能夠排序,也可以實現(xiàn)Comparable接口,在用Collections類的sort方法排序時若不指定Comparator,那就以自然順序排序。所謂自然順序就是實現(xiàn)Comparable接口設(shè)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國動態(tài)圖像分析儀行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國自動粉末噴涂系統(tǒng)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球可生物降解微膠囊解決方案行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球生物分析測試行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國高壓清洗機噴槍行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 幼兒園科學(xué)討論活動概述模塊二幼兒園科學(xué)探究活動講解
- 必殺08 第九、十單元 西半球的國家和極地地區(qū)(綜合題20題)(解析版)
- 猜想02 重難點(70道題25個重難點)【考題猜想】(解析版)
- 2025我國合同法對合同效力的規(guī)定
- 合法的房屋租賃合同
- 體育概論(第二版)課件第三章體育目的
- 《氓》教學(xué)設(shè)計 2023-2024學(xué)年統(tǒng)編版高中語文選擇性必修下冊
- 化學(xué)元素周期表注音版
- T-GDASE 0042-2024 固定式液壓升降裝置安全技術(shù)規(guī)范
- 消防維保服務(wù)方案及實施細則
- 香港朗文4B單詞及句子
- 數(shù)據(jù)中心運維方案
- 運動技能學(xué)習(xí)與控制課件第五章運動中的中樞控制
- 財務(wù)部規(guī)范化管理 流程圖
- 斷絕關(guān)系協(xié)議書范文參考(5篇)
- 最新變態(tài)心理學(xué)課件
評論
0/150
提交評論