第07Java標(biāo)準(zhǔn)類庫_第1頁
第07Java標(biāo)準(zhǔn)類庫_第2頁
第07Java標(biāo)準(zhǔn)類庫_第3頁
第07Java標(biāo)準(zhǔn)類庫_第4頁
第07Java標(biāo)準(zhǔn)類庫_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、.Java程序設(shè)計(jì)之網(wǎng)絡(luò)編程 電子郵件:教學(xué)課件.第7章 Java標(biāo)準(zhǔn)類庫 .主要內(nèi)容7.1 簡單類型包裝器類 7.2 System 7.3 Runtime7.4 Math7.5 日期時(shí)間實(shí)用工具類 7.6 集合框架.7.1 簡單類型包裝器類nNumbernDouble,F(xiàn)loatnByte,Short,Int,Longn數(shù)字和字符串的轉(zhuǎn)換nCharacternBoolean.7.1.1 Number 類n抽象類Number定義了一個(gè)包裝數(shù)字類型:字節(jié)型(Byte),短整型(Short),整型(Integer),長整型(Long),浮點(diǎn)型(Float)和雙精度型(Double)的超類。 n定義

2、了從包裝器返回基本類型的方法ndouble doubleValue( ),float floatValue( )n byte byteValue( ), ,int intValue( ),nlong longValue( ),short shortValue( ).7.1.2 Double和Floatn雙精度(Double)和浮點(diǎn)(Float)分別是對類型double和類型float的浮點(diǎn)值的包裝器。 n構(gòu)造方法nFloat(double value),Float(float value),nFloat(String s)nDouble(double value)nDouble(String

3、s).Float和Double中定義的常量 MAX_VALUE最大正值MIN_VALUE最小正值NaN非數(shù)字POSITIVE_INFINITY正無窮NEGATIVE_INFINITY負(fù)無窮.Float和Double中定義的主要方法nint compareTo (),比較兩個(gè)對象nstatic float parseFloat(String s)把字符串轉(zhuǎn)換成floatnstatic Float valueOf(String s)把字符串轉(zhuǎn)換成Float nstatic float parseDouble(String s)把字符串轉(zhuǎn)換成doublenstatic Double valueOf(

4、String s)把字符串轉(zhuǎn)換成Double.Double ,Float 例子/提取簡單類型值 f = F.floatValue(); System.out.println(f); System.out.println(d); /比較 System.out.println(D.equals(F);float f = 3.1415f;double d = 3.14159267;Float F = new Float(f); /轉(zhuǎn)化為字符串System.out.println(F.toString();System.out.println(D.toString(); .7.1.3 Byte, Sh

5、ort, Integer, Long nByte,Short,Integer,和Long類分別是字節(jié)型(byte),短整型(short),整型(int)和長整型(long)整數(shù)類型的包裝器 n構(gòu)造函數(shù)nByte(byte value),Byte(String str),Short(short value),Short(String str),Integer(int value),Integer(String str),Long(long value),Long(String str).定義的主要方法n parseByte ,parseInt,parseShort,parseLong, 把字符串

6、轉(zhuǎn)化成數(shù)字類型nValueOf(),把字符串轉(zhuǎn)化成數(shù)字類型包裝器n把數(shù)字轉(zhuǎn)化成字符串nstatic String toBinaryString(int value)nstatic String toHexString(int value)nstatic String toOctalString(int value)nstatic String toString(int value)nstatic String toString(int value,int radix).7.1.4 數(shù)字和字符串的轉(zhuǎn)換n字符串向數(shù)字的轉(zhuǎn)換nparseByte( ),parseShort( ),parseInt(

7、)和parseLong( ) n數(shù)字向字符串的轉(zhuǎn)換nstatic String toBinaryString(int value)nstatic String toHexString(int value)nstatic String toOctalString(int value)nstatic String toString(int value)nstatic String toString(int value,int radix).數(shù)字字符串轉(zhuǎn)換示例1 String s1 = 12; String s2 = 34; String s = null; int i1 = 0, i2 = 0,

8、sum = 0; /把字符串轉(zhuǎn)換成整數(shù) i1 = Integer.parseInt(s1); i2 = new Integer(s2).intValue(); sum = i1 + i2; /把整數(shù)轉(zhuǎn)換成字符串 System.out.println(s);.數(shù)字字符串轉(zhuǎn)換示例2 int i = -34567; String s = null; /轉(zhuǎn)換成二進(jìn)制字符串 System.out.println(2進(jìn)制字串: + /轉(zhuǎn)換成8進(jìn)制字符串System.out.println(8進(jìn)制字符串: + /轉(zhuǎn)換成16進(jìn)制字符串 System.out.println(16進(jìn)制字符串: + /轉(zhuǎn)換成帶符號

9、表示的8進(jìn)制字符串 s = System.out.println(帶符號8進(jìn)制字符串: + s);/從8進(jìn)制字符串轉(zhuǎn)化成Integer對象Integer I = Integer.valueOf(s, 8); System.out.println(Integer對象中的值:+I.intValue();.7.1.5 CharacternCharacter是圍繞字符型(char)的一個(gè)簡單的包裝器。nCharacter的構(gòu)造函數(shù)如下:nCharacter(char ch)nCharacter類定義了很多常數(shù)和靜態(tài)方法。 nisDigit(char ch) , isLetter(char ch) ni

10、sLowerCase(char ch) ,toUpperCase(char ch) .7.1.6 BooleannBoolean是一個(gè)圍繞布爾(boolean)值的非常細(xì)小的包裝器,主要用在通過引用傳遞布爾(boolean)變量的場合。 n構(gòu)造函數(shù)nBoolean(boolean boolValue)nBoolean(String boolString)String s = true;boolean b = true;if (b = System.out.println(兩個(gè)布爾變量相等);System.out.println(Boolean.valueOf(s).hashCode();.主要

11、內(nèi)容7.1 簡單類型包裝器類 7.2 System 7.3 Runtime7.4 Math7.5 日期時(shí)間實(shí)用工具類 7.6 集合框架.7.2 SystemnSystem類保存靜態(tài)方法和變量的集合。n標(biāo)準(zhǔn)的輸入,輸出和Java運(yùn)行時(shí)錯(cuò)誤輸出存儲在變量in,out和err中 。n定義的主要方法見下表 .System的主要方法1static void arraycopy(Object source, int Start, Object target, int Start,int size)復(fù)制數(shù)組。static long currentTimeMillis( )返回自1970年1月1日午夜至今的時(shí)

12、間,時(shí)間單位為毫秒。static void exit(int exitCode)返回exitCode值給父進(jìn)程static void gc( )建議JVM進(jìn)行垃圾回收static Properties getProperties( ) 返回與Java運(yùn)行系統(tǒng)有關(guān)的屬性類static String getProperty(String key)返回與key有關(guān)的屬性。.System的主要方法2static String getProperty(String key,String default)返回一個(gè)與key有關(guān)的屬性。如果期望的屬性沒有被發(fā)現(xiàn),則返回defaultstatic Securit

13、yManager getSecurityManager( )返回當(dāng)前的安全管理程序,如果沒有安裝安全管理程序,則返回一個(gè)空對象(null object)static void load(String library)載入其文件由library指定的動態(tài)庫,必須指定其完全路徑static void loadLibrary(String libraryName)載入其庫名為libraryName的動態(tài)庫static String mapLibraryName(String lib)對應(yīng)名為lib的庫,返回一個(gè)指定平臺的名字static void runFinalization( )啟動調(diào)用不用的但

14、還不是回收站中的對象的finalize( )方法。.System的主要方法3static void setProperties(Properties sysProperties)設(shè)置由sysProperties指定的當(dāng)前系統(tǒng)屬性Static String setProperty(String key,String value)將value值賦給名為key的屬性(static void setSecurityManager( SecurityManager s)設(shè)置由s指定的安全管理程序.記錄程序執(zhí)行的時(shí)間public class Elapsed public static void main(

15、String args) long start, end, sum = 0; System.out.println( a loop from 0 to 1,000,000,000); start = for (int i = 0; i 1000000000; i+) sum = sum + i * i; end = System.out.println(Elapsed time: + (end - start); .訪問JVM的環(huán)境屬性1java.versionJRE的版本java.vendorJRE的廠商java.vendor.urlJRE廠商的URLjava.homeJava的安裝目錄ja

16、va.vm.specification.versionJVM規(guī)范的版本java.vm.specification.vendorJVM規(guī)范的廠商JVM規(guī)范的名稱java.vm.versionJVM的實(shí)現(xiàn)版本java.vm.vendorJVM的實(shí)現(xiàn)廠商JVM的實(shí)現(xiàn)名稱.訪問JVM的環(huán)境屬性2public class PropsDemo public static void main(String args) System.out.println(System.(java.version); System.out.print

17、ln(System.getProperty(java.vendor); System.out.println(System.getProperty(java.vendor.url); System.out.println(System.getProperty(java.home); System.out.println(System.getProperty(user.dir); System(java.class.path, d:javalib); System.out.println(System.getProperty(java.class.path); .主要內(nèi)容7.1 簡單類型包裝器類

18、 7.2 System 7.3 Runtime7.4 Math7.5 日期時(shí)間實(shí)用工具類 7.6 集合框架.7.3 RuntimenRuntime類封裝了運(yùn)行時(shí)環(huán)境。n用戶一般不實(shí)例化一個(gè)Runtime對象。但是可以通過調(diào)用靜態(tài)方法Runtime.getRuntime( )而獲得對當(dāng)前Runtime對象的引用。n一旦獲得了對當(dāng)前對象的引用,就可以調(diào)用幾個(gè)控制Java虛擬機(jī)的狀態(tài)和行為的方法。 .Runtime 常用的方法Process exec(String progName)throws IOException將由progName指定的程序作為獨(dú)立的進(jìn)程來執(zhí)行。返回描述新進(jìn)程的類型Proce

19、ss的對象void exit(int exitCode)暫停執(zhí)行并且向父進(jìn)程返回exitCode的值long freeMemory( )返回Java運(yùn)行系統(tǒng)可以利用的空閑內(nèi)存的大概字節(jié)數(shù)void gc( )初始化垃圾回收站static Runtime getRuntime( )返回當(dāng)前的Runtime對象void halt(int code)立即終止Java虛擬機(jī),void loadLibrary(String libraryName)載入庫名為libraryName的動態(tài)庫long totalMemory( )返回程序可以利用的內(nèi)存的總字節(jié)數(shù).使用Runtime執(zhí)行其他程序public cl

20、ass ExecDemo public static void main(String args) Runtime r = Runtime.getRuntime(); Process p = null; try p = (notepad); /程序暫停1秒鐘 ); /關(guān)閉外部程序 (); catch (Exception e) System.out.println(Error executing notepad.); .主要內(nèi)容7.1 簡單類型包裝器類 7.2 System 7.3 Runtime7.4 Math7.5 日期時(shí)間實(shí)用工具類 7.6 集合框架.7.4 Mathn定義了一些靜態(tài)的數(shù)

21、學(xué)函數(shù)方法描述static double exp(double a)返回自然常數(shù)e的a次冪的值static double log(double a)返回a的自然對數(shù)值static double pow(double y, double x)返回以y為底數(shù),以x為指數(shù)的冪值;例如pow(3.0, 3.0)返回27.0static double sqrt(double a)返回a的平方根.主要內(nèi)容7.1 簡單類型包裝器類 7.2 System 7.3 Runtime7.4 Math7.5 日期時(shí)間實(shí)用工具類 7.6 集合框架.7.5 日期時(shí)間實(shí)用工具類nDaten封裝當(dāng)前的日期和時(shí)間,也可以封裝一

22、個(gè)指定的日期 nCalendar,GregorianCalendar n一個(gè)日歷n可以獲取時(shí)間分量n日期計(jì)算.7.5.1 Daten構(gòu)造函數(shù)nDate( ),從當(dāng)前時(shí)間構(gòu)造對象nDate(long millisec),接收一個(gè)參數(shù),該參數(shù)等于從1970年年1月月1日午夜日午夜起至今的毫秒數(shù)的大小 .Date的主要方法方法描述boolean after(Date date)如果調(diào)用對象所包含的日期遲于由date指定的日期,則返回true;否則返回falseboolean before(Date date) 如果調(diào)用對象所包含的日期早于由date指定的日期,則返回true;否則返回falseObj

23、ect clone( )復(fù)制調(diào)用對象int compareTo(Date date)將調(diào)用對象的值與date的值進(jìn)行比較。long getTime( )返回自1970年1月1日起至今的毫秒數(shù)值void setTime(long time)按time的指定,設(shè)置時(shí)間和日期,表示自1970年1月1日午夜至今的以毫秒為單位的時(shí)間值String toString( )將調(diào)用Date對象轉(zhuǎn)換成字符串并且返回結(jié)果.Date的例子 Date d1 = new Date(); Date d2 = new Date(1140203030304L); System.out.println(d1); System.

24、out.println(d2); if (d2.(d1) System.out.println(d2晚于d1); System.out.println(pareTo(d1); /改變的d2的值為d1 System.out.println(d2);.7.5.2 Calendar n抽象Calendar類提供了一組方法,這些方法允許將以毫秒毫秒為單位的時(shí)間轉(zhuǎn)換為一組有用的分量。一些可以提供信息的類型是:年,月,日,小時(shí),分和秒。n定義的一些常量,表示時(shí)間分量 AMFRIDAYPMAM_PMHOURSATURDAYAPRILHOUR_OF_DAYSECONDAUGUSTJANUARYSEPTEMBE

25、RDATEJULYSUNDAYDAY_OF_MONTHJUNETHURSDAYDAY_OF_WEEKMARCHTUESDAYDAY_OF_YEARMILLISECONDWEDNESDAYDECEMBERMINUTEWEEK_OF_MONTH.Calendar的主要方法方法描述abstract void add(intfield, intamount)將amount加到由field指定的時(shí)間或日期分量。例如Calendar.HOURfinal void clear( )對調(diào)用對象的所有時(shí)間分量置0final int get(int field)返回調(diào)用對象的一個(gè)分量的值。該分量由field指定。

26、Calendar.YEAR,static Calendar getInstance( )對默認(rèn)的地區(qū)和時(shí)區(qū),返回一個(gè)Calendar對象final Date getTime( )返回一個(gè)與調(diào)用對象的時(shí)間相等的Date對象final void set(int field, int val)在調(diào)用對象中,將由field指定的日期和時(shí)間分量賦給由val指定的值。final void set(int year, int month,int day, int hours,int min, int sec)設(shè)置調(diào)用對象的各種日期和時(shí)間分量final void setTime(Date d)設(shè)置調(diào)用對象的各

27、種日期和時(shí)間分量。該信息從Date對象d中獲得.7.5.3 GregorianCalendarn是Calendar的子類nGregorianCalendar是Calendar的一個(gè)實(shí)現(xiàn)大家所熟悉的標(biāo)準(zhǔn)日歷(現(xiàn)在通用的陽歷)的具體工具 nGregorianCalendar定義了兩個(gè)域:AD和BC。它們代表由公歷定義的兩個(gè)紀(jì)元。.GregorianCalendar的構(gòu)造函數(shù)nGregorianCalendar(int year, int month, int date)nGregorianCalendar(int year, int month, int date, int hours,int m

28、inutes)nGregorianCalendar(int year, int month, int date, int hours,int minutes, int seconds)n三種形式中,都設(shè)置了日,月和年。這里,year指定了從1900年起的年數(shù)。month指定了月,以0表示一月。月中的日由date指定,從1開始。第一種形式以午夜設(shè)置時(shí)間。第二種形式以小時(shí)和分鐘設(shè)置時(shí)間,第三種形式增加了秒。.日歷的使用Calendar c = Calendar.getInstance(); c.setFirstDayOfWeek(Calendar.MONDAY); /設(shè)置日期和時(shí)間. c.set(

29、2006, 11, 30); c.set(Calendar.HOUR, 10); c.set(Calendar.MINUTE, 29); c.set(Calendar.SECOND, 22); c.add(Calendar.DATE, 10); c.add(Calendar.HOUR_OF_DAY, 10);詳見程序.主要內(nèi)容7.1 簡單類型包裝器類 7.2 System 7.3 Runtime7.4 Math7.5 日期時(shí)間實(shí)用工具類 7.6 集合框架.7.6集合框架n集合接口 n實(shí)現(xiàn)List接口的類 n實(shí)現(xiàn)Set接口的類 n通過迭代接口訪問類集 nGenerics(泛化) n映射接口(Ma

30、p) n實(shí)現(xiàn)Map接口的類 n比較器(Comparator) n類集算法 nArrays .集合框架概述nJava的集合框架使你的程序處理對象數(shù)組的方法標(biāo)準(zhǔn)化。 n統(tǒng)一的操作方法和接口n一些通用的算法n比較高的性能,可擴(kuò)展.7.6.1集合接口 接口描述能使你操作對象數(shù)組,它位于集合框架層次結(jié)構(gòu)的頂層擴(kuò)展Collection,表示有序的,可包括重復(fù)元素的列表 擴(kuò)展Collection,表示無序的,無重復(fù)元素的集合(數(shù)學(xué)上的含義)。 擴(kuò)展Set,對Set中元素進(jìn)行排序 .Collection接口nCollection接口是構(gòu)造集合框架的基礎(chǔ)。它聲明所有集合類都將擁有的核心方法。 n包含下面幾種類型

31、的方法n增加元素,清除元素,判斷元素的存在n返回迭代接口,把集合轉(zhuǎn)換成數(shù)組n集合的大小.Collection的主要方法1boolean add(Object obj)將obj加入到調(diào)用集合類中。如果obj被加入到集合類中了,則返回true;如果未能加入集合,則返回falseboolean addAll(Collection c)將c中的所有元素都加入到調(diào)用集合類中,如果操作成功,則返回true;否則返回falsevoid clear( )從調(diào)用集合類中刪除所有元素boolean contains(Object obj)如果obj是調(diào)用集合類的一個(gè)元素,則返回true,否則,返回falseboo

32、lean containsAll(Collection c)如果調(diào)用集合類包含了c中的所有元素,則返回true;否則,返回false.Collection的主要方法2int hashCode( ) 返回調(diào)用集合類的散列值boolean isEmptyisEmpty( )如果調(diào)用集合類是空的,則返回true;否則返回falseIterator iteratoriterator( )返回調(diào)用集合類的迭代程序Boolean remove(Objectremove(Object obj)從調(diào)用集合類中刪除obj的一個(gè)實(shí)例。如果這個(gè)元素被刪除了,則返回true;否則返回falseBoolean remo

33、veAll(CollremoveAll(Collectionection c)從調(diào)用集合類中刪除c的所有元素。如果集合類被改變了(也就是說元素被刪除了),則返回true;否則返回false.Collection的主要方法3Boolean retainAllretainAll(Collection c)刪除調(diào)用集合類中除了包含在c中的元素之外的全部元素。如果集合類被改變了(也就是說元素被刪除了),則返回true,否則返回falseint sizesize( )返回調(diào)用集合類中元素的個(gè)數(shù)Object toArray( )返回一個(gè)數(shù)組,該數(shù)組包含了所有存儲在調(diào)用集合類中的元素。Object toAr

34、raytoArray(Object array )返回一個(gè)數(shù)組,該數(shù)組僅僅包含了那些類型與數(shù)組元素類型匹配的集合類元素。.List接口n繼承了Collection接口n表示了一種有序的集合n元素可以通過它們在列表中的位置被插入和訪問 n一個(gè)列表可以包含重復(fù)元素 .List接口的方法void addadd(int index, Object obj)boolean addAlladdAll(int index, Collection c)Object getget(int index)int indexOfindexOf(Object obj)int lastIndexOflastIndexOf

35、(Object obj)ListIterator listIteratorlistIterator( )ListIterator listIteratorlistIterator(int index)Object removeremove(int index)Object setset(int index, Object obj)List subListsubList(int start, int end).Set和SortedSet接口 nSet繼承了Collection并說明了不允許重復(fù)元素的類集的特性 nSortedSet接口擴(kuò)展了Set并說明了按升序排列的集合的特性。.SortedSe

36、t接口的方法方法描述Comparator comparator( )返回調(diào)用被排序集合的比較器,如果對該集合使用自然順序,則返回nullObject first( )返回調(diào)用被排序集合的第一個(gè)元素SortedSet headSet(Object end)返回一個(gè)包含那些小于end的元素的SortedSet,那些元素包含在調(diào)用被排序集合中。返回被排序集合中的元素也被調(diào)用被排序集合所引用Object last( )返回調(diào)用被排序集合的最后一個(gè)元素SortedSet subSet(Object start, Object end)返回一個(gè)SortedSet,它包括了從start到end1的元素。返回

37、類集中的元素也被調(diào)用對象所引用SortedSet tailSet(Object start)返回一個(gè)SortedSet,它包含了那些包含在分類集合中的大于等于start的元素。返回集合中的元素也被調(diào)用對象所引用.7.6.2 實(shí)現(xiàn)List接口的類.實(shí)現(xiàn)List的類類描述AbstractCollection抽象類,實(shí)現(xiàn)大多數(shù)Collection接口中的方法AbstractList抽象類,繼承AbstractCollection并實(shí)現(xiàn)大多數(shù)List接口AbstractSequentialList抽象類,為了被類集使用并擴(kuò)展AbstractList,該類集使用連續(xù)而不是隨機(jī)方式訪問其元素LinkedL

38、ist通過繼承AbstractSequentialList來實(shí)現(xiàn)鏈接列表ArrayList通過擴(kuò)展AbstractList來實(shí)現(xiàn)動態(tài)數(shù)組Vector可增長的動態(tài)數(shù)組,和ArrayList類似,支持同步特性Stack繼承Vector,實(shí)現(xiàn)了棧的數(shù)據(jù)結(jié)構(gòu).ArrayList nArrayList支持可隨需要而增長的動態(tài)數(shù)組。nArrayList有如下的構(gòu)造函數(shù):nArrayList( )nArrayList(Collection c)nArrayList(int capacity) .ArrayList例子1 ArrayList al = new ArrayList(); System.out.p

39、rintln(List的初始大小: + al.size(); / 向List中增加元素 al.add(B); al.add(C); al.add(D); al.add(E); al.add(F); al.add(1, A2);.ArrayList例子2System.out.println(增加元數(shù)后的大小: + /顯示其內(nèi)容System.out.println(List中的內(nèi)容: + al);/刪除List中的元素System.out.println(刪除元素后的大?。?+ al.size();System.out.println(內(nèi)容: + al);.LinkedList 類nLinkedL

40、ist類擴(kuò)展AbstractSequentialList并實(shí)現(xiàn)List接口。它提供了一個(gè)鏈接列表數(shù)據(jù)結(jié)構(gòu)。n它具有如下的兩個(gè)構(gòu)造函數(shù)nLinkedList( )nLinkedList(Collection c)n使用addFirst( )方法可以在列表頭增加元素;使用addLast( )方法可以在列表的尾部增加元素 nObject getFirst( ),Object getLast( ).LinkedList 類的例子LinkedList ll = new LinkedList(); ll.add(A); ll.add(B);ll.addFirst(A3);ll.addLast(A4);詳細(xì)

41、見程序.7.6.3 實(shí)現(xiàn)實(shí)現(xiàn)Set接口的類接口的類.HashSet類 nHashSet擴(kuò)展AbstractSet并且實(shí)現(xiàn)Set接口。n該類集使用散列表進(jìn)行存儲。n在散列(hashing)中,一個(gè)關(guān)鍵字的信息內(nèi)容被用來確定唯一的一個(gè)值,稱為散列碼(hashcode)。而散列碼被用來當(dāng)作與關(guān)鍵字相連的數(shù)據(jù)的存儲下標(biāo)。n存儲在HashSet中的元素必須正確覆蓋java.lang.Object中定義的hashCode()方法。 .HashSet的例子HashSet hs = new HashSet();hs.add(A);hs.add(B);hs.add(C);hs.add(D);hs.add(E);

42、hs.add(F);hs.add(A);System.out.println(hs);D, A, F, C, B, E從輸出結(jié)果可以看出,元素并沒有按順序進(jìn)行存儲,并且也沒有重復(fù)元素。.TreeSet類 nTreeSet為使用樹結(jié)構(gòu)進(jìn)行存儲的Set接口提供了一個(gè)工具n對象按升序存儲。訪問和檢索是很快的。n在存儲了大量的需要進(jìn)行快速檢索的排序信息的情況下,TreeSet是一個(gè)很好的選擇。.TreeSet的使用TreeSet hs = new TreeSet();hs.add(D);hs.add(E);hs.add(F);hs.add(A);hs.add(B);hs.add(C);hs.add(A

43、);System.out.println(hs);該程序的輸出如下:A, B, C, D, E, FTreeSet按樹存儲其元素,它們被按照自然順序自動安排,也不能有重復(fù)元素 .7.6.4通過迭代接口訪問類集 n通常希望依次訪問類集中的元素。到目前為止,處理這個(gè)問題的最簡單方法是使用iterator,nIterator是一個(gè)或者實(shí)現(xiàn)Iterator或者實(shí)現(xiàn)ListIterator接口的對象。Iterator可以遍歷類集中的元素,從而獲得或刪除元素。nListIterator擴(kuò)展Iterator,允許雙向遍歷列表,并可以修改。 .Iterator接口中的方法 方法描述boolean hasNex

44、t( ) 如果存在更多的元素,則返回true,否則返回falseObject next( )返回下一個(gè)元素。如果沒有下一個(gè)元素,則引發(fā)NoSuchElementException異常void remove( )從集合中刪除當(dāng)前元素,如果試圖在調(diào)用next( )方法之前,調(diào)用remove( )方法,則引發(fā)IllegalStateException異常。如果重復(fù)調(diào)用兩次remove()方法也會發(fā)生這個(gè)異常。.ListIterator接口中的方法void add(Object obj)int nextIndex( )boolean hasNext( ) Object previous( )boole

45、an hasPrevious( )int previousIndex( )Object next( )void remove( )void set(Object obj).Iterator的使用ArrayList al = new ArrayList();Iterator itr = while (itr.hasNext()Object element = System.out.print(element + );詳細(xì)見程序.7.6.5 Generics(泛化) nGenerics是JDK5.0新增加的功能,在使用集合時(shí),提供了一種編譯時(shí)類型安全檢查功能,并能減少類型強(qiáng)制轉(zhuǎn)化的麻煩。n當(dāng)你從一

46、個(gè)集合中取出一個(gè)元素時(shí),例如使用Iterator接口中的next()方法,其返回值的類型是Object,在使用這個(gè)元素時(shí),需要把返回值轉(zhuǎn)換為元素本身的類型。這種類型轉(zhuǎn)化是不安全的。 .未使用泛化的代碼ArrayList a=new ArrayList();a.add(new Integer(1);a.add(new Integer(2);for(Iterator i=a.iterator();i.hasNext();)int i1 = (Integer)i.next().intValue();.使用泛化后的代碼ArrayList a=new ArrayList();a.add(new Inte

47、ger(1);a.add(new Integer(2);for(Iterator i=a.iterator();i.hasNext();)int i1 = i.next().intValue();.7.6.6 映射接口(Map) n映射(map)是一個(gè)存儲關(guān)鍵字和值的關(guān)聯(lián)或者說是關(guān)鍵字/值對的對象。n給定一個(gè)關(guān)鍵字,可以得到它的值。關(guān)鍵字和值都是對象,每一對關(guān)鍵字/值,叫做一項(xiàng)項(xiàng)。n關(guān)鍵字必須是唯一的。但值是可以被重復(fù)的。n有些映射可以接收null關(guān)鍵字和null值。而有的則不行 .Map接口的方法void clear( )boolean isEmpty( )boolean containsK

48、ey(Object k)Set keySet( )boolean containsValue(Object v) Object put(Object k, Object v)Set entrySet( )void putAll(Map m)Boolean equals(Object obj)Object remove(Object k)Object get(Object k)int size( )int hashCode( )Collection values( ).SortedMap接口接口 nSortedMap接口擴(kuò)展了Map,它確保了各項(xiàng)按關(guān)鍵字升升序排序序排序。 Comparator

49、comparator( )Object firstKey( )SortedMap headMap(Object end)Object lastKey( )SortedMap subMap(Object start, Object end)SortedMap tailMap(Object start).Map.Entry 接口接口 nMap.Entry接口使得可以操作映射的項(xiàng)。 boolean equals(Object obj)Object getKey( )Object getValue( )int hashCode( )Object setValue(Object v).實(shí)現(xiàn)Map接口的類 .HashMap 類類 nHashMap類使用散列表實(shí)現(xiàn)Map接口 HashMap hm = new HashMa

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論