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

下載本文檔

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

文檔簡(jiǎn)介

1、.Java程序設(shè)計(jì)之網(wǎng)絡(luò)編程 電子郵件:教學(xué)課件.第7章 Java標(biāo)準(zhǔn)類庫(kù) .主要內(nèi)容7.1 簡(jiǎn)單類型包裝器類 7.2 System 7.3 Runtime7.4 Math7.5 日期時(shí)間實(shí)用工具類 7.6 集合框架.7.1 簡(jiǎn)單類型包裝器類nNumbernDouble,F(xiàn)loatnByte,Short,Int,Longn數(shù)字和字符串的轉(zhuǎn)換nCharacternBoolean.7.1.1 Number 類n抽象類Number定義了一個(gè)包裝數(shù)字類型:字節(jié)型(Byte),短整型(Short),整型(Integer),長(zhǎng)整型(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)分別是對(duì)類型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正無(wú)窮NEGATIVE_INFINITY負(fù)無(wú)窮.Float和Double中定義的主要方法nint compareTo (),比較兩個(gè)對(duì)象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 例子/提取簡(jiǎn)單類型值 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)和長(zhǎng)整型(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)換成帶符號(hào)

9、表示的8進(jìn)制字符串 s = System.out.println(帶符號(hào)8進(jìn)制字符串: + s);/從8進(jìn)制字符串轉(zhuǎn)化成Integer對(duì)象Integer I = Integer.valueOf(s, 8); System.out.println(Integer對(duì)象中的值:+I.intValue();.7.1.5 CharacternCharacter是圍繞字符型(char)的一個(gè)簡(jiǎn)單的包裝器。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ì)小的包裝器,主要用在通過(guò)引用傳遞布爾(boolean)變量的場(chǎng)合。 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 簡(jiǎn)單類型包裝器類 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ò)誤輸出存儲(chǔ)在變量in,out和err中 。n定義的主要方法見(jià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)的屬性。如果期望的屬性沒(méi)有被發(fā)現(xiàn),則返回defaultstatic Securit

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

14、還不是回收站中的對(duì)象的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); .訪問(wèn)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)名稱.訪問(wè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 簡(jiǎn)單類型包裝器類

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對(duì)象。但是可以通過(guò)調(diào)用靜態(tài)方法Runtime.getRuntime( )而獲得對(duì)當(dāng)前Runtime對(duì)象的引用。n一旦獲得了對(duì)當(dāng)前對(duì)象的引用,就可以調(diào)用幾個(gè)控制Java虛擬機(jī)的狀態(tài)和行為的方法。 .Runtime 常用的方法Process exec(String progName)throws IOException將由progName指定的程序作為獨(dú)立的進(jìn)程來(lái)執(zhí)行。返回描述新進(jìn)程的類型Proce

19、ss的對(duì)象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對(duì)象void halt(int code)立即終止Java虛擬機(jī),void loadLibrary(String libraryName)載入庫(kù)名為libraryName的動(dòng)態(tài)庫(kù)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 簡(jiǎn)單類型包裝器類 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的自然對(duì)數(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 簡(jiǎn)單類型包裝器類 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)造對(duì)象nDate(long millisec),接收一個(gè)參數(shù),該參數(shù)等于從1970年年1月月1日午夜日午夜起至今的毫秒數(shù)的大小 .Date的主要方法方法描述boolean after(Date date)如果調(diào)用對(duì)象所包含的日期遲于由date指定的日期,則返回true;否則返回falseboolean before(Date date) 如果調(diào)用對(duì)象所包含的日期早于由date指定的日期,則返回true;否則返回falseObj

23、ect clone( )復(fù)制調(diào)用對(duì)象int compareTo(Date date)將調(diào)用對(duì)象的值與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對(duì)象轉(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( )對(duì)調(diào)用對(duì)象的所有時(shí)間分量置0final int get(int field)返回調(diào)用對(duì)象的一個(gè)分量的值。該分量由field指定。

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

27、種日期和時(shí)間分量。該信息從Date對(duì)象d中獲得.7.5.3 GregorianCalendarn是Calendar的子類nGregorianCalendar是Calendar的一個(gè)實(shí)現(xiàn)大家所熟悉的標(biāo)準(zhǔn)日歷(現(xiàn)在通用的陽(yáng)歷)的具體工具 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);詳見(jiàn)程序.主要內(nèi)容7.1 簡(jiǎn)單類型包裝器類 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通過(guò)迭代接口訪問(wèn)類集 nGenerics(泛化) n映射接口(Ma

30、p) n實(shí)現(xiàn)Map接口的類 n比較器(Comparator) n類集算法 nArrays .集合框架概述nJava的集合框架使你的程序處理對(duì)象數(shù)組的方法標(biāo)準(zhǔn)化。 n統(tǒng)一的操作方法和接口n一些通用的算法n比較高的性能,可擴(kuò)展.7.6.1集合接口 接口描述能使你操作對(duì)象數(shù)組,它位于集合框架層次結(jié)構(gòu)的頂層擴(kuò)展Collection,表示有序的,可包括重復(fù)元素的列表 擴(kuò)展Collection,表示無(wú)序的,無(wú)重復(fù)元素的集合(數(shù)學(xué)上的含義)。 擴(kuò)展Set,對(duì)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的所有元素。如果集合類被改變了(也就是說(shuō)元素被刪除了),則返回true;否則返回false.Collection的主要方法3Boolean retainAllretainAll(Collection c)刪除調(diào)用集合類中除了包含在c中的元素之外的全部元素。如果集合類被改變了(也就是說(shuō)元素被刪除了),則返回true,否則返回falseint sizesize( )返回調(diào)用集合類中元素的個(gè)數(shù)Object toArray( )返回一個(gè)數(shù)組,該數(shù)組包含了所有存儲(chǔ)在調(diào)用集合類中的元素。Object toAr

34、raytoArray(Object array )返回一個(gè)數(shù)組,該數(shù)組僅僅包含了那些類型與數(shù)組元素類型匹配的集合類元素。.List接口n繼承了Collection接口n表示了一種有序的集合n元素可以通過(guò)它們?cè)诹斜碇械奈恢帽徊迦牒驮L問(wè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并說(shuō)明了不允許重復(fù)元素的類集的特性 nSortedSet接口擴(kuò)展了Set并說(shuō)明了按升序排列的集合的特性。.SortedSe

36、t接口的方法方法描述Comparator comparator( )返回調(diào)用被排序集合的比較器,如果對(duì)該集合使用自然順序,則返回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)用對(duì)象所引用SortedSet tailSet(Object start)返回一個(gè)SortedSet,它包含了那些包含在分類集合中的大于等于start的元素。返回集合中的元素也被調(diào)用對(duì)象所引用.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ī)方式訪問(wèn)其元素LinkedL

38、ist通過(guò)繼承AbstractSequentialList來(lái)實(shí)現(xiàn)鏈接列表ArrayList通過(guò)擴(kuò)展AbstractList來(lái)實(shí)現(xiàn)動(dòng)態(tài)數(shù)組Vector可增長(zhǎng)的動(dòng)態(tài)數(shù)組,和ArrayList類似,支持同步特性Stack繼承Vector,實(shí)現(xiàn)了棧的數(shù)據(jù)結(jié)構(gòu).ArrayList nArrayList支持可隨需要而增長(zhǎng)的動(dòng)態(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、見(jiàn)程序.7.6.3 實(shí)現(xiàn)實(shí)現(xiàn)Set接口的類接口的類.HashSet類 nHashSet擴(kuò)展AbstractSet并且實(shí)現(xiàn)Set接口。n該類集使用散列表進(jìn)行存儲(chǔ)。n在散列(hashing)中,一個(gè)關(guān)鍵字的信息內(nèi)容被用來(lái)確定唯一的一個(gè)值,稱為散列碼(hashcode)。而散列碼被用來(lái)當(dāng)作與關(guān)鍵字相連的數(shù)據(jù)的存儲(chǔ)下標(biāo)。n存儲(chǔ)在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é)果可以看出,元素并沒(méi)有按順序進(jìn)行存儲(chǔ),并且也沒(méi)有重復(fù)元素。.TreeSet類 nTreeSet為使用樹結(jié)構(gòu)進(jìn)行存儲(chǔ)的Set接口提供了一個(gè)工具n對(duì)象按升序存儲(chǔ)。訪問(wèn)和檢索是很快的。n在存儲(chǔ)了大量的需要進(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按樹存儲(chǔ)其元素,它們被按照自然順序自動(dòng)安排,也不能有重復(fù)元素 .7.6.4通過(guò)迭代接口訪問(wèn)類集 n通常希望依次訪問(wèn)類集中的元素。到目前為止,處理這個(gè)問(wèn)題的最簡(jiǎn)單方法是使用iterator,nIterator是一個(gè)或者實(shí)現(xiàn)Iterator或者實(shí)現(xiàn)ListIterator接口的對(duì)象。Iterator可以遍歷類集中的元素,從而獲得或刪除元素。nListIterator擴(kuò)展Iterator,允許雙向遍歷列表,并可以修改。 .Iterator接口中的方法 方法描述boolean hasNex

44、t( ) 如果存在更多的元素,則返回true,否則返回falseObject next( )返回下一個(gè)元素。如果沒(méi)有下一個(gè)元素,則引發(fā)NoSuchElementException異常void remove( )從集合中刪除當(dāng)前元素,如果試圖在調(diào)用next( )方法之前,調(diào)用remove( )方法,則引發(fā)IllegalStateException異常。如果重復(fù)調(diào)用兩次remove()方法也會(huì)發(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ì)見(jiàn)程序.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è)存儲(chǔ)關(guān)鍵字和值的關(guān)聯(lián)或者說(shuō)是關(guān)鍵字/值對(duì)的對(duì)象。n給定一個(gè)關(guān)鍵字,可以得到它的值。關(guān)鍵字和值都是對(duì)象,每一對(duì)關(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. 本站所有資源如無(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論