Java程序設計項目案例化教程課件:常用類和集合_第1頁
Java程序設計項目案例化教程課件:常用類和集合_第2頁
Java程序設計項目案例化教程課件:常用類和集合_第3頁
Java程序設計項目案例化教程課件:常用類和集合_第4頁
Java程序設計項目案例化教程課件:常用類和集合_第5頁
已閱讀5頁,還剩35頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Java面向對象程序設計常用類和集合教學內容掌握Java系統包中String、StringBuffer等常用的類的應用掌握Collection、List和Set集合接口的應用常用類

常用類是在我們學習和開發Java程序中,常常用到的類,例如:字符與不同數據之間的轉換,隨機數等,這些類Java系統中提供的。本小節我們將學幾個主要的常用類。String類1、String類中的常用構造方法如表5.1所示:表5.1構造方法主要功能publicString()創建一個空的字符串對象。publicString(byte[]bytes)通過byte數組構造字符串對象。publicString(char[]value,intoffset,intcount)從字符數組的第offset位將字符串的count個字節轉化為字符串(從0開始計數)。publicString(StringBufferbuffer)通過StringBuffer數組構造字符串對象?!纠?-1】:通過案例來掌握String類的常用構造方法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); }}程序運行結果:1、String類中常用的方法如表5.2所示:表5.2方法主要功能publiccharcharAt(intindex)取字符串中的某一個字符,其中的參數index指的是字符串中序數。字符串的序數從0開始到length()-1publicintcompareTo(StringanotherString)當前String對象與anotherString比較。相等關系返回0;不相等時,從兩個字符串第0字符開始比較,返回第一個不相等的字符差,另一種情況,較長字符串的前面部分恰巧是較短的字符串,返回它們的長度差publicStringconcat(Stringstr)將該String對象與str連接在一起publicbooleanendsWith(Stringsuffix)該String對象是否以suffix結尾publicbooleanequals(ObjectanObject)當anObject不為空并且與當前String對象一樣,返回true;否則,返回falsepublicvoidgetChars(intsrcBegin,intsrcEnd,char[]dst,intdstBegin)該方法將字符串拷貝到字符數組中。其中,srcBegin為拷貝publicintindexOf(Stringstr)從左到右配字符串位置publicintindexOf(Stringstr,intfromIndex)從fromIndex開始從左到右配字符串位置publicintlastIndexOf(Stringstr)從右到左找第一個匹配字符串位置publicintlastIndexOf(Stringstr,intfromIndex)從fromIndex開始從右到左找第一個匹配字符串位置public.intlength()返回當前字符串長度publicbooleanstartsWith(Stringprefix)該String對象是否以prefix開始publicbooleanstartsWith(Stringprefix,inttoffset)該String對象從toffset位置算起,是否以prefix開始publicStringsubstring(intbeginIndex)取從beginIndex位置開始到結束的子字符串publicStringsubstring(intbeginIndex,intendIndex)取從beginIndex位置開始到endIndex位置的子字符串publicchar[]toCharArray()將該String對象轉換成char數組【例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+"");}}}程序運行結果:將int、char、boolean、long、float和double六種類型的變量轉換為String類型的對象。publicstaticStringvalueOf(inti)publicstaticStringvalueOf(booleanb)publicstaticStringvalueOf(charc)publicstaticStringvalueOf(doubled)publicstaticStringvalueOf(floatf)publicstaticStringvalueOf(longl)publicstaticStringvalueOf(Objectobj)將String類型的對象轉換為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類當對字符串進行修改的時候,需要使用StringBuffer類。和String類不同的是,StringBuffer類的對象能夠被多次的修改,并且不產生新的未使用對象。StringBuffer可以完成完成字符串的動態添加、插入和替換等操作。StringBuffer類的造方法如表5.3所示:表5.3構造方法主要功能PublicStringBuffer()無參構造方法PublicStringBuffer(intcapacity)指定容量的字符串緩沖區對象PublicStringBuffer(Stringstr)指定字符串內容的字符串緩沖區對象

StringBuffer類的常用方法如表5.4所示:表5.4方法主要功能PublicsubString(intstart)返回一個新的String,它包含此序列當前所包含的字符子序列。PubliccharcharAt(intindex)返回此序列中指定索引處的char值Publicappend(Stringstring)將參數里指定的內容追加到此序列中PubliccharcharAt(intindex)返回此序列中指定索引處的char值Publicdelete(intstart,intend)移除此序列的子字符串中的字符。PublicdeletecharAt(intindex)移除此序列指定位置的char。Publicinsert(intoffset,str)表示將括號里的某種數據類型的變量插入某一序列中PublicStringBufferreplace(intstart,intend,Stringstr)用指定的String中的字符替換此序列的子字符串中的StringPublicStringtoString()返回表示此順序中的數據的字符串。Publicintlength()返回長度(字符數)。【例5-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());}}程序運行結果:Math類Math類本身不是靜態的,但它的方法以及成員變量都是靜態的。Math類的常用方法如表5.5所示:表5.5方法主要功能publicstaticdoubleabs(doublea)返回一個參數的絕對值publicstaticdoublecbrt(doublea)返回參數的立方根publicstaticdoubleceil(doublea)返回大于或等于參數的最小(最接近負無窮大)double值,并等于數學整數publicstaticdoublefloor(doublea)返回小于或等于參數的最大(最接近正無窮大)double值,等于數學整數publicstaticdoublemax(doublea,doubleb)返回兩個參數值中的較大值publicstaticdoublemin(doublea,doubleb)返回兩個參數的較小值publicstaticdoublepow(doublea,doubleb)將第一個參數的第二個參數次冪publicstaticdoublerandom()返回一個double值為正號,大于等于0.0,小于1.0(偽隨機選擇的)publicstaticdoublerint(doublea)返回與a最接近值的double值,等于數學整數(注意.5的時候會取偶數)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)+""); }}程序運行結果:Random類Random類的實例用于生成偽隨機數的流。Random類的構造方法如表5.6所示:表5.6構造方法主要功能PublicRandom()該構造方法使用一個和當前系統時間對應的相對時間有關的數字作為種子數,然后使用這個種子數構造Random對象。PublicRandom(longseed)該構造方法可以通過制定一個種子數進行創建,種子數只是隨機算法的起源數字,和生成的隨機數字的區間無關。

Random類的常用方法如表5.7所示:表5.7方法主要功能protectedintnext(intbits)生成下一個偽隨機數。當被所有其他方法使用時,子類應該重寫此方法publicintnextInt()返回下一個偽隨機數,它是此隨機數生成器的序列中均勻分布的int值。nextInt的常規協定是,偽隨機地生成并返回一個int值。所有232個可能int值的生成概率(大致)相同publicfloatnextFloat()返回下一個偽隨機數,它是取自此隨機數生成器序列的、在0.0和1.0之間均勻分布的float值publicdoublenextDouble()返回下一個偽隨機數,它是取自此隨機數生成器序列的、在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);} }}程序運行結果:Date類我們經常要處理有關日期和時間的信息,這時候你可以使用java.util中的Date類,Date類并不僅僅表示日期,而是精確到毫秒。此外,由于在java.sql中存在一個同名的Date類,此類是用來描述數據庫中的時間字段

1、Date的常用構造方法如表5.8所示:表5.8構造方法主要功能publicDate()構造一個Date對象并對其進行初始化以反映當前時間publicDate(longdate)構造一個Date對象,并根據相對于GMT1970年1月1日00:00:00的毫秒數對其進行初始化

2、Date的常用的方法如表5.9所示:表5.9方法主要功能publicbooleanbefore(Datewhen)測試此日期是否在指定日期之前publicbooleanafter(Datewhen)測試此日期是否在指定日期之后publiclonggetTime()返回自1970年1月1日以來,由Date對象表示的00:00:00GMT的毫秒數publicvoidsetTime(longtime)按照相對于GMT1970年1月1日00:00:00的毫秒數設置這個Date對象publicintcompareTo(DateanotherDate)比較兩個日期進行訂購publicStringtoString()格式化日期轉義格式yyyy-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()); }}程序運行結果:Vector類Vector的構造方法如表5.10所示:表5.10構造方法主要功能publicVector()構造一個空向量,使其內部數據數組的大小為10,標準容量增量為零publicVector(intinitialCapacity)構造一個空向量,使其內部數據數組的大小為10,其標準容量增量為零publicVector(intinitialCapacity,intcapacityIncrement)使用指定的初始容量和容量增量構造一個空的向量

Vector類的常用方法如表5.11所示:表5.11方法主要功能publicbooleanadd(Ee)將指定的元素追加到此Vector的末尾publicvoidadd(intindex,Eelement)在此Vector中的指定位置插入指定的元素publicvoidclear()從此Vector中刪除所有元素。此調用返回后,Vector將為空(除非引發異常)publicbooleanremoveAll(Collection<?>c)從此Vector中刪除指定集合中包含的所有元素publicintindexOf(Objecto)返回此向量中指定元素的第一次出現的索引,如果此向量不包含元素,則返回-1publicintindexOf(Objecto,intindex)返回此向量中指定元素的第一次出現的索引,從index向前index,如果未找到該元素,則返回-1。publicintlastIndexOf(Objecto)返回此向量中指定元素的最后一次出現的索引,如果此向量不包含元素,則返回-1publicintlastIndexOf(Objecto,intindex)返回此向量中指定元素的最后一次出現的索引,從index,如果未找到該元素,則返回-1publicintsize()返回此向量中的組件數publicvoidsetSize(intnewSize)設置此向量的大小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)+""); } }}程序運行結果:集合集合類存放于java.util包中。集合就是存放數據的容器,集合類存放的都是對象的引用,而非對象本身,出于表達上的便利,我們稱集合中的對象就是指集合中對象的引用。集合類型主要有3種:set(集)、list(列表)和map(映射)。集合比數組的優勢:1、集合可以存儲任意類型的對象數據,數組只能存儲同一種數據類型的數據。2、集合的長度是會發生變化的,數組的長度是固定的。CollectionCollection是一個接口,是高度抽象出來的集合,它包含了集合的基本操作:添加、刪除、清空、遍歷(讀取)、是否為空、獲取大小、是否保護某元素等等。Collection接口的所有子類(直接子類和間接子類)都必須實現2種構造函數:不帶參數的構造函數和參數為Collection的構造函數。帶參數的構造函數,可以用來轉換Collection的類型。在Collection接口之中一共定義了15個方法,在所有的方法之中,只有兩個方法最為常用:add()、iterator()。不過很少會去直接使用Collection,都會使用Collection的兩個子接口:List、Set。Collcetion接口要實現的方法如表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()返回此集合中的元素數defaultSpliterator<E>spliterator()創建一個Spliterator在這個集合中的元素defaultStream<E>stream()返回以此集合作為源的順序StreamObject[]toArray()返回一個包含此集合中所有元素的數組<T>T[]toArray(T[]a)返回包含此集合中所有元素的數組;返回的數組的運行時類型是指定數組的運行時類型List在實際的應用中如果使用到隊列,棧,鏈表,首先可以想到使用List。不同的場景下面使用不同的工具,效率才能更高!List是一個有序,可以方重復的數據的集合。1、當集合中對插入元素數據的速度要求不高,但是要求快速訪問元素數據,則使用ArrayList!2、當集合中對訪問元素數據速度不做要求不高,但是對插入和刪除元素數據速度要求高的情況,則使用LinkedList!3、當集合中有多線程對集合元素進行操作時候,則使用Vector!但是現在BVector現在一般不再使用,如需在多線程下使用,可以用CopyOnWriteArrayList,在java.util.concurrent包下。4、當集合中有需求是希望后保存的數據先讀取出來,則使用Stack!按照面向對象的概念來講,現在使用ArrayList主要的目的是為List接口實例化,所有的操作方法都以List接口為主。List的方法大部分是從Collection繼承而來的?!纠?-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));}}}程序運行結果:Set在Collection接口定義了15個常用方法,但是Set子接口并不像List子接口那樣對Collection接口進行了大量的擴充,而是完整的繼承了下來,那么就證明了在Set子接口之中是肯定無法使用get()方法的。Set是一個無序,不允許方重復的數據的集合。無序是指的是存進去時候是一個順序,取出來的時候不一定是這個順序。那么在Set子接口之中常用的兩個子類:HashSet、TreeSet,下面分別說明。HashSetHash(哈希)屬于一種算法,這種算法的核心意義指的是找空保存算法,所以只要一看見hash第一反應就是說沒有順序的保存。【例5-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); }}程序運行結果:TreeSet如果現在希望Set集合之中保存的數據有順序,那么就通過TreeSet進行Set接口的實例化?!纠?-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);}}程序運行結果:迭代輸出:Iterator但是如何取得Iterator接口的實例化對象呢?這一操作在Collection接口就已經明確定義了,因為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+"、");}}}程序運行結果:mapMap提供了一種映射關系,其中的元素是以鍵值對(key-value)的形式存儲的,能夠實現根據key快速查找value;Map中的鍵值對以Entry類型的對象實例形式存在;Map中鍵(key值)不可重復,value值可以重復,一個value值可以和很多key值形成對應關系,每個建最多只能映射到一個值。Map中的常用方法如表5.14所示:表5.14方法主要功能voidclear()從該地圖中刪除所有的映射(可選操作)put(objectkey,objectvalue)要是之前沒有關于該鍵的映射,在存儲該鍵值對,如果之前已經有關于該鍵的映射,則使用新的值替換舊值keySet()返回map中包含的鍵的set視圖set,可以理解為將map中的所有鍵取出來以set形式存儲remove(Objectkey)如果存在對應的鍵值對,則移除鍵值對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));}}程序運行結果:比較器Comparable是一個對象本身就已經支持自比較所需要實現的接口,如String、Integer自己就實現了Comparable接口,可完成比較大小操作。自定義類要在加入list容器中后能夠排序,也可以實現Comparable接口,在用Collections類的sort方法排序時若不指定Comparator,那就以自然順序排序。所謂自然順序就是實現Comparable接口設

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論