電子教案專(zhuān)業(yè)知識(shí)公開(kāi)課一等獎(jiǎng)優(yōu)質(zhì)課大賽微課獲獎(jiǎng)?wù)n件_第1頁(yè)
電子教案專(zhuān)業(yè)知識(shí)公開(kāi)課一等獎(jiǎng)優(yōu)質(zhì)課大賽微課獲獎(jiǎng)?wù)n件_第2頁(yè)
電子教案專(zhuān)業(yè)知識(shí)公開(kāi)課一等獎(jiǎng)優(yōu)質(zhì)課大賽微課獲獎(jiǎng)?wù)n件_第3頁(yè)
電子教案專(zhuān)業(yè)知識(shí)公開(kāi)課一等獎(jiǎng)優(yōu)質(zhì)課大賽微課獲獎(jiǎng)?wù)n件_第4頁(yè)
電子教案專(zhuān)業(yè)知識(shí)公開(kāi)課一等獎(jiǎng)優(yōu)質(zhì)課大賽微課獲獎(jiǎng)?wù)n件_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第7章 慣用實(shí)用類(lèi)1.Date類(lèi)2.Calendar類(lèi)3.Math類(lèi)與Biglnteger類(lèi)4.LinkedList泛型類(lèi)5.HashSet泛型類(lèi)6.HashMap泛型類(lèi)7.TreeSet泛型類(lèi)8.TreeMap泛型類(lèi)9.Stack泛型類(lèi)第1頁(yè)7.1 Date類(lèi) 1Date對(duì)象 Date類(lèi)在java.util包中。使用Date類(lèi)無(wú)參數(shù)結(jié)構(gòu)方 法創(chuàng)建對(duì)象能夠獲取當(dāng)?shù)禺?dāng)前時(shí)間。 用Date結(jié)構(gòu)方法Date(long time)創(chuàng)建Date對(duì)象表 示相對(duì)1970年1月1日0點(diǎn)(GMT)時(shí)間,比如參數(shù) time取值60*60*1000秒表示Thu Jan 01 01:00:00 GMT 1970。 能

2、夠用System類(lèi)靜態(tài)方法 public long第2頁(yè) currentTimeMillis()獲取系統(tǒng)當(dāng)前時(shí)間,這個(gè)時(shí)間是從1970.年1月1日0點(diǎn)(GMT)到當(dāng)前時(shí)刻所走過(guò)毫秒數(shù)(這是一個(gè)不小數(shù))。能夠依據(jù)currentTimeMillis()方法得到數(shù)字,用Date結(jié)構(gòu)方法Date(long time)來(lái)創(chuàng)建一個(gè)當(dāng)?shù)厝掌贒ate對(duì)象。 2格式化時(shí)間 Date對(duì)象表示時(shí)間默認(rèn)次序是:星期、月、日、小時(shí)、分、秒、年。比如: Sat Apr 28 21:59:38 CST 。 我們可能希望按著某種習(xí)慣來(lái)輸出時(shí)間,比如時(shí)間序 :年 月 星期 日或年 月 星期 日 小時(shí) 分 秒。 第3頁(yè) 這時(shí)能夠

3、使用DateFormat子類(lèi)SimpleDateFormat來(lái)實(shí)現(xiàn)日期格式化。SimpleDateFormat有一個(gè)慣用結(jié)構(gòu)方法: public SimpleDateFormat(String pattern)。 該結(jié)構(gòu)方法能夠用參數(shù)pattern指定格式創(chuàng)建一個(gè)對(duì) 象,該對(duì)象調(diào)用: format(Date date) 方法格式化時(shí)間對(duì)象date。 第4頁(yè) 需要注意是,pattern中應(yīng)該含有一些有效字符序列。比如: ly或yy 表示用2位數(shù)字輸出年份;yyyy表示用4位數(shù)字輸出年份。 lM 或MM 表示用2為數(shù)字或文本輸出月份,假如想用漢字輸出月份,pattern中應(yīng)連續(xù)包含最少3個(gè)M,如:

4、MMM。 ld 或dd 表示用2位數(shù)字輸出日。 lH或HH 表示用兩位數(shù)字輸出小時(shí)。 lm或mm 表示用兩位數(shù)字輸出分。 ls或ss 表示用兩位數(shù)字輸出秒。 l E 表示用字符串輸出星期。 第5頁(yè) 在下面例子1中,我們用三種格式輸出時(shí)間。 上述程序輸出結(jié)果: 現(xiàn)在時(shí)間:Thu Sep 02 09:33:55 CST 現(xiàn)在時(shí)間: time:-09-02 goodTime:-09月-星期四02日-09:時(shí)33:分55:秒 北京時(shí)間 現(xiàn)在時(shí)間:北京時(shí)間02日09時(shí)九月 55秒33分星期四- 3600秒表示日期時(shí)間是:Thu Jan 01 07:59:56 CST 1970- 1800秒表示日期時(shí)間是

5、:Thu Jan 01 07:59:58 CST 1970 返回第6頁(yè)7.2 Calendar類(lèi) Calendar類(lèi)在java.util包中。使用Calendar類(lèi)static方法getInstance()能夠初始化一個(gè)日歷對(duì)象,如: Calendar calendar= Calendar.getInstance(); 然后,calendar對(duì)象能夠調(diào)用方法: public final void set(int year,int month,int date) public final void set(int year,int month,int date,int hour,int minu

6、te) public final void set(int year,int month, int date, int hour, int minute,int second)第7頁(yè) 將日歷翻到任何一個(gè)時(shí)間,當(dāng)參數(shù)year取負(fù)數(shù)時(shí)表示公元前。 calendar對(duì)象調(diào)用方法: public int get(int field) 能夠獲取相關(guān)年份、月份、小時(shí)、星期等信息,參數(shù)field有效值由Calendar靜態(tài)常量指定,比如: calendar.get(Calendar.MONTH); 返回一個(gè)整數(shù),假如該整數(shù)是0表示當(dāng)前日歷是在一月,該整數(shù)是1表示當(dāng)前日歷是在二月等。第8頁(yè) 日歷對(duì)象調(diào)用 pu

7、blic long getTimeInMillis() 能夠?qū)r(shí)間表示為毫秒。 下面例子2使用Calendar來(lái)表示時(shí)間。并計(jì)算了年和1949年之間相隔天數(shù)。 上述程序輸出結(jié)果: 現(xiàn)在時(shí)間是: 9月2日 星期4 9時(shí)38分30秒 年10月1日和1949年10月1日相隔20454天 下面例子3輸出年10月日歷頁(yè)。 返回第9頁(yè)7.3 Math類(lèi)與BigInteger類(lèi) 1Math類(lèi) 在編寫(xiě)程序時(shí),可能需要計(jì)算一個(gè)數(shù)平方根、絕對(duì)值、獲取一個(gè)隨機(jī)數(shù)等等。java.lang包中類(lèi)包含許多用來(lái)進(jìn)行科學(xué)計(jì)算類(lèi)方法,這些方法能夠直接經(jīng)過(guò)類(lèi)名調(diào)用。另外,Math類(lèi)還有兩個(gè)靜態(tài)常量,E和PI,它們值分別是: 2.

8、7182828284590452354 和 3.14159265358979323846。第10頁(yè) 以下是Math類(lèi)慣用方法:lpublic static long abs(double a) 返回a絕對(duì)值。l public static double max(double a,double b) 返回a、 b最大值。lpublic static double min(double a,double b) 返回a、b最小值。lpublic static double random() 產(chǎn)生一個(gè)0到1之間隨機(jī)數(shù)(不包含0和1)。lpublic static double pow(double a

9、,double b) 返回ab次冪。第11頁(yè)l public static double sqrt(double a) 返回a平方根。l public static double log(double a) 返回a對(duì)數(shù)。l public static double sin(double a) 返回正弦值。l public static double asin(double a) 返回反正弦值。 有時(shí)我們可能需要對(duì)輸出數(shù)字結(jié)果進(jìn)行必要格式 化,比如,對(duì)于3.14356789,我們希望保留小數(shù)位為3位、整數(shù)部分最少要顯示3位,即將3.14356789格式化為003.144。 能夠使用java.te

10、xt包中NumberFormat類(lèi),該類(lèi)調(diào)用類(lèi)方法: public static final NumberFormat getInstance()第12頁(yè)l 實(shí)例化一個(gè)NumberFormat對(duì)象,該對(duì)象調(diào)用l public final String format(double number)l方法能夠格式化數(shù)字number。l NumberFormat類(lèi)有以下慣用方法:l public void setMaximumFractionDigits(int newValue)l public void setMinimumFractionDigits(int newValue)l public

11、void setMaximumIntegerDigits(int newValue)l public void setMinimumIntegerDigits(int newValue) 第13頁(yè) 在下面例子4中我們用一定格式輸出5平方根,經(jīng)過(guò)一個(gè)20次循環(huán),每次獲取1到8之間一個(gè)隨機(jī)數(shù)。 2BigInteger類(lèi) 程序有時(shí)需要處理大整數(shù),java.math包中BigInteger類(lèi)提供任意精度整數(shù)運(yùn)算。能夠使用結(jié)構(gòu)方法: public BigInteger(String val) 結(jié)構(gòu)一個(gè)十進(jìn)制BigInteger對(duì)象。該結(jié)構(gòu)方法能夠發(fā)生NumberFormatException異常,也就是

12、說(shuō),字符串參數(shù)val中假如含有非數(shù)字字母就會(huì)發(fā)生NumberFormatException異常。 第14頁(yè) 以下是BigInteger類(lèi)慣用方法: public BigInteger add(BigInteger val) 返回當(dāng)前大整數(shù)對(duì)象與參數(shù)指定大整數(shù)對(duì)象和。 public BigInteger subtract(BigInteger val) 返回當(dāng)前大整數(shù)對(duì)象與參數(shù)指定大整數(shù)對(duì)象差。 public BigInteger multiply(BigInteger val) 返回當(dāng)前大整數(shù)對(duì)象與參數(shù)指定大整數(shù)對(duì)象積。 public BigInteger divide(BigInteger

13、val) 返回當(dāng)前大整數(shù)對(duì)象與參數(shù)指定大整數(shù)對(duì)象商。第15頁(yè) public BigInteger remainder(BigInteger val) 返回當(dāng)前大整數(shù)對(duì)象與參數(shù)指定大整數(shù)對(duì)象余。 public int compareTo(BigInteger val) 返回當(dāng)前大整數(shù)對(duì)象與參數(shù)指定大整數(shù)比較結(jié)果,返回值是1、-1或0,分別表示當(dāng)前大整數(shù)對(duì)象大于、小于或等于參數(shù)指定大整數(shù)。 public BigInteger abs() 返回當(dāng)前大整數(shù)對(duì)象絕對(duì)值。 public BigInteger pow(int exponent) 返回當(dāng)前大整數(shù)對(duì)象exponent次冪。第16頁(yè) public

14、 String toString() 返回當(dāng)前大整數(shù)對(duì)象 十進(jìn)制字符串表示。 public String toString(int p) 返回當(dāng)前大整數(shù)對(duì)象p進(jìn)制字符串表示。 在下面例子5中,計(jì)算了2個(gè)大整數(shù)和、差、積和商,并計(jì)算出了一個(gè)大整數(shù)因子個(gè)數(shù)(因子中不包含1和大整數(shù)本身)。 返回第17頁(yè)7.4 LinkedList泛型類(lèi) 使用LinkedList泛型類(lèi)能夠創(chuàng)建鏈表結(jié)構(gòu)數(shù)據(jù)對(duì) 象。鏈表是由若干個(gè)節(jié)點(diǎn)組成一個(gè)數(shù)據(jù)結(jié)構(gòu),每個(gè)節(jié)點(diǎn)含有一個(gè)數(shù)據(jù)和下一個(gè)節(jié)點(diǎn)引用(單鏈表),或含有一個(gè)數(shù)據(jù)并含有上一個(gè)節(jié)點(diǎn)引用和下一個(gè)節(jié)點(diǎn)引用(雙鏈表),節(jié)點(diǎn)索引從0開(kāi)始。鏈表適合動(dòng)態(tài)地改變它存放數(shù)據(jù),如,增加、刪除

15、節(jié)點(diǎn)等。 第18頁(yè) 1LinkedList對(duì)象 java.util 包中LinkedList泛型類(lèi)創(chuàng)建對(duì)象以鏈表結(jié)構(gòu)存放數(shù)據(jù),習(xí)慣上稱(chēng)LinkedList類(lèi)創(chuàng)建對(duì)象為鏈表對(duì)象。比如, LinkedList mylist=new LinkedList(); 創(chuàng)建一個(gè)空雙鏈表。然后mylist能夠使用add(String obj)方法向鏈表依次增加節(jié)點(diǎn),節(jié)點(diǎn)中數(shù)據(jù)是參數(shù)obj指定對(duì)象引用。 第19頁(yè) 比如: mylist.add(“How”); mylist.add(“Are”); mylist.add(“You”); mylist.add(“Java”); 這時(shí),雙鏈表mylist就有了有個(gè)節(jié)點(diǎn)

16、,節(jié)點(diǎn)是自動(dòng)連 接在一起,不需要我們?nèi)プ鲞B接,也就是說(shuō),不需 要我們?nèi)ゲ僮靼才殴?jié)點(diǎn)中所存放下一個(gè)或上一個(gè)節(jié)點(diǎn)引用。 第20頁(yè) 2慣用方法 以下是LinkedList泛型類(lèi)一些慣用方法。 public boolean add(E element) 向鏈表末尾添加一個(gè)新節(jié)點(diǎn),該節(jié)點(diǎn)中數(shù)據(jù)是參數(shù)elememt指定對(duì)象。 public void add(int index ,E element) 向鏈表指定位置添加一個(gè)新節(jié)點(diǎn),該節(jié)點(diǎn)中數(shù)據(jù)是參數(shù)elememt指定對(duì)象。 public void addFirst(E element) 向鏈表頭添加新節(jié)點(diǎn),該節(jié)點(diǎn)中數(shù)據(jù)是參數(shù)elememt指定對(duì)象。第21頁(yè)

17、 public E removeFirst() 刪除第一個(gè)節(jié)點(diǎn),并返回這個(gè)節(jié)點(diǎn)中對(duì)象。 public E removeLast() 刪除最終一個(gè)節(jié)點(diǎn)對(duì)象,并返回這個(gè)節(jié)點(diǎn)中對(duì)象。 public E get(int index) 得到鏈表中指定位置處節(jié)點(diǎn)中對(duì)象。 public E getFirst() 得到鏈表中第一個(gè)節(jié)點(diǎn)中對(duì)象。 public E getLast() 得到鏈表中最終一個(gè)節(jié)點(diǎn)中對(duì)象。 public int indexOf(E element) 返回含有數(shù)據(jù)element節(jié)點(diǎn)在鏈表中首次出現(xiàn)位置,假如鏈表中無(wú)此節(jié)點(diǎn)則返回-1。第22頁(yè) public int lastIndexOf(E

18、 element) 返回含有數(shù)據(jù)element節(jié)點(diǎn)在鏈表中最終出現(xiàn)位置,假如鏈表中無(wú)此節(jié)點(diǎn)則返回-1。 public E set(int index ,E element) 將當(dāng)前鏈表index位置節(jié)點(diǎn)中對(duì)象element替換為參數(shù)element指定對(duì)象。并返回被替換對(duì)象。 public int size() 返回鏈表長(zhǎng)度,即節(jié)點(diǎn)個(gè)數(shù)。 public boolean contains(Object element) 判斷鏈表節(jié)點(diǎn)中是否有節(jié)點(diǎn)含有對(duì)象element。 第23頁(yè) public Object clone() 得到當(dāng)前鏈表一個(gè)克隆鏈表, 該克隆鏈表中節(jié)點(diǎn)數(shù)據(jù)改變不會(huì)影響到當(dāng)前鏈表中節(jié)點(diǎn)

19、數(shù)據(jù),反之亦然。 下述例子6使用了上述一些方法。 3遍歷鏈表 例子6借助get方法實(shí)現(xiàn)了遍歷鏈表。我們能夠借助泛型 類(lèi)Iterator實(shí)現(xiàn)遍歷鏈表,一個(gè)鏈表對(duì)象能夠使用iterator()方法返回一個(gè)Iterator類(lèi)型對(duì)象,假如鏈表是“Student類(lèi)型”鏈表,即鏈表節(jié)點(diǎn)中數(shù)據(jù)是Student類(lèi)創(chuàng)建對(duì)象,那么該鏈表使用iterator()方法返回一個(gè)Iterator類(lèi)型對(duì)象,該對(duì)象使用next()方法遍歷鏈表。在下面例子7中,我們把學(xué)生成績(jī)存放在一個(gè)鏈表中,并實(shí)現(xiàn)了遍歷鏈表。 第24頁(yè) 4LinkedList泛型類(lèi)實(shí)現(xiàn)接口 LinkedList泛型類(lèi)實(shí)現(xiàn)了泛型接口List,而List接口由是

20、Collection接口子接口。LinkedList類(lèi)中絕大部分方法都是接口方法實(shí)現(xiàn)。編程時(shí),能夠使用接口回調(diào)技術(shù),即把LinkedList對(duì)象引用賦值給Collection接口變量或List接口變量,那么接口就能夠調(diào)用類(lèi)實(shí)現(xiàn)接口方法。 第25頁(yè)5SDK1.5之前LinkedList類(lèi) JDK1.5之前沒(méi)有泛型LinkedList類(lèi),能夠用普通 LinkedList創(chuàng)建一個(gè)鏈表對(duì)象,比如: LinkedList mylist=new LinkedList(); 創(chuàng)建了一個(gè)空雙鏈表。然后mylist鏈表能夠使用add(Object obj)方法向這個(gè)鏈表依次添加節(jié)點(diǎn)。因?yàn)槿魏晤?lèi)都是Object類(lèi)

21、子類(lèi),所以能夠把任何一個(gè)對(duì)象作為鏈表節(jié)點(diǎn)中對(duì)象。 第26頁(yè) 需要注意是當(dāng)使用get()獲取一個(gè)節(jié)點(diǎn)中對(duì)象,要用類(lèi)型轉(zhuǎn)換運(yùn)算符轉(zhuǎn)換回原來(lái)類(lèi)型。Java泛型主要目標(biāo)是能夠建立含有類(lèi)型安全集合框架,如鏈表、散列表等數(shù)據(jù)結(jié)構(gòu),最主要一個(gè)優(yōu)點(diǎn)就是:在使用這些泛型類(lèi)建立數(shù)據(jù)結(jié)構(gòu)時(shí),無(wú)須進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換,即不要求進(jìn)行運(yùn)行時(shí)類(lèi)型檢驗(yàn)。SDK1.5是支持泛型編譯器,它將運(yùn)行時(shí)類(lèi)型檢驗(yàn)提前到編譯時(shí)執(zhí)行,使代碼更安全。假如你使用舊版本LinkedList類(lèi),1.5編譯器會(huì)給出警告信息,但程序仍能正確運(yùn)行。下面是使用舊版本LinkedList例子。 返回第27頁(yè)7.5 HashSet泛型類(lèi) HashSet泛型類(lèi)在數(shù)據(jù)

22、組織上類(lèi)似數(shù)學(xué)上集合,能夠進(jìn)行“交”、“并”、“差”等運(yùn)算。 1HashSet對(duì)象 HashSet泛型類(lèi)創(chuàng)建對(duì)象稱(chēng)作集合,比如 HashSet set= HashSet(); 那么,set就是一個(gè)能夠存放String類(lèi)型數(shù)據(jù)集合, set能夠調(diào)用add(String s)方法將String類(lèi)型數(shù)據(jù)添加 到集合中,添加到集合中數(shù)據(jù)稱(chēng)做集合元素。 第28頁(yè) 集合不允許有相同元素,也就是說(shuō),假如b已經(jīng)是集 合中元素,那么再執(zhí)行set.add(b)操作是無(wú)效。集 合對(duì)象初始容量是16個(gè)字節(jié),裝載因子是0.75,也 就是說(shuō),假如集合添加元素超出總?cè)萘?5%時(shí),集合容量將增加一倍。 2慣用方法 publi

23、c boolean add(E o) 向集合添加參數(shù)指定元素。 public void clear() 清空集合,使集合不含有任何元素。 public boolean contains(Object o) 判斷參數(shù)指定數(shù)據(jù)是否屬于集合。 public boolean isEmpty() 判斷集合是否為空。 第29頁(yè) public boolean remove(Object o) 集合刪除參數(shù)指定元素。 public int size() 返回集合中元素個(gè)數(shù)。 Object toArray() 將集合元素存放到數(shù)組中,并返回這個(gè)數(shù)組。 boolean containsAll(HanshSet s

24、et) 判斷當(dāng)前集合是否包含參數(shù)指定集合。 public Object clone() 得到當(dāng)前集合一個(gè)克隆對(duì)象,該對(duì)象中元素改變不會(huì)影響到當(dāng)前集合中元素,反之亦然。 第30頁(yè) 3集合交、并與差 集合對(duì)象調(diào)用boolean addAll(HashSet set)方法能夠和參數(shù)指定集合求并運(yùn)算,使得當(dāng)前集合成為兩個(gè)集合并。 集合對(duì)象調(diào)用boolean boolean retainAll (HashSet set)方法能夠和參數(shù)指定集合求交運(yùn)算,使得當(dāng)前集合成為兩個(gè)集合交。 集合對(duì)象調(diào)用boolean boolean boolean removeAll (HashSet set)方法能夠和參數(shù)指定

25、集合求差運(yùn)算,使得當(dāng)前集合成為兩個(gè)集合差 參數(shù)指定集合必須和當(dāng)前集合是同種類(lèi)型集合,不然上述方法返回false。 第31頁(yè) 下面例子10求2個(gè)集合A、B對(duì)稱(chēng)差集合,即求。 上述程序運(yùn)行結(jié)果: A和B對(duì)稱(chēng)差集合有4個(gè)元素: 4,6,3,5, 4HashSet泛型類(lèi)實(shí)現(xiàn)接口 HashSet泛型類(lèi)實(shí)現(xiàn)了泛型接口Set,而 Set接口由是Collection接口子接口。 HashSet類(lèi)中絕大部分方法都是接口方法實(shí)現(xiàn)。編程時(shí),能夠使用接口回調(diào)技術(shù),即把HashSet對(duì)象引用賦值給Collection接口變量或Set接口變量,那么接口就能夠調(diào)用類(lèi)實(shí)現(xiàn)接口方法。返回第32頁(yè)7.6 HashMap泛型類(lèi) H

26、ashMap也是一個(gè)很實(shí)用類(lèi), HashMap對(duì)象采取散列表這種數(shù)據(jù)結(jié)構(gòu)存放數(shù)據(jù),習(xí)慣上稱(chēng)HashMap對(duì)象為散列映射對(duì)象。散列映射用于存放鍵/值數(shù)據(jù)對(duì),允許把任何數(shù)量鍵/值數(shù)據(jù)對(duì)存放在一起。鍵不能夠發(fā)生邏輯沖突,即不要兩個(gè)數(shù)據(jù)項(xiàng)使用相同鍵,假如出現(xiàn)兩個(gè)數(shù)據(jù)項(xiàng)對(duì)應(yīng)相同鍵,那么,先前散列映射中鍵/值對(duì)將被替換。散列映射在它需要更多存放空間時(shí)會(huì)自動(dòng)增大容量。 第33頁(yè) 比如,假如散列映射裝載因子是0.75,那么當(dāng)散列映射容量被使用了75%時(shí),它就把容量增加到原始容量倍。對(duì)于數(shù)組和鏈表這兩種數(shù)據(jù)結(jié)構(gòu),假如要查找它們存放某個(gè)特定元素卻不知道它位置,就需要從頭開(kāi)始訪問(wèn)元素直到找到匹配為止;假如數(shù)據(jù)結(jié)構(gòu)中

27、包含很多元素,就會(huì)浪費(fèi)時(shí)間。這時(shí)最好使用散列映射來(lái)存放要查找數(shù)據(jù),使用散列映射能夠降低檢索開(kāi)銷(xiāo)。第34頁(yè) 1HashMap對(duì)象 HashMap泛型類(lèi)創(chuàng)建對(duì)象稱(chēng)作散列映射,比如: HashMap hashtable= HashMap(); 那么,hashtable就能夠存放“鍵/值”對(duì)數(shù)據(jù),其中鍵必須是一個(gè)String對(duì)象,鍵對(duì)應(yīng)值必須是Student對(duì)象。hashtable能夠調(diào)用public V put(K key,V value)將鍵/值對(duì)數(shù)據(jù)存放到散列映射中,該方法同時(shí)返回鍵所對(duì)應(yīng)值。第35頁(yè) 2慣用方法 public void clear() 清空散列映射。 public Object

28、 clone() 返回當(dāng)前散列映射一個(gè)克隆。 public boolean containsKey(Object key) 假如散列映射有鍵/值對(duì)使用了參數(shù)指定鍵,方法返回true,不然返回false。 public boolean containsValue(Object value) 假如散列映射有鍵/值正確值是參數(shù)指定值,方法返回true,不然返回false。 第36頁(yè) public V get(Object key) 返回散列映射中使用key做鍵鍵/值對(duì)中值。 public boolean isEmpty() 假如散列映射不含任何鍵/值對(duì),方法返回true,不然返回false。 pub

29、lic V remove(Object key) 刪除散列映射中鍵為參數(shù)指定鍵/值對(duì),并返回鍵對(duì)應(yīng)值。 public int size() 返回散列映射大小,即散列映射中鍵/值正確數(shù)目。 第37頁(yè) 3遍歷散列映射 假如想取得散列映射中全部鍵/值對(duì)中值,首先使用 public Collection values() 方法返回一個(gè)實(shí)現(xiàn)Collection接口類(lèi)創(chuàng)建對(duì)象引用,并要求將該對(duì)象引用返回到Collection接口變量中。values()方法返回對(duì)象中存放了散列映射中全部“鍵/值”對(duì)中“值”,這么接口變量就能夠調(diào)用類(lèi)實(shí)現(xiàn)方法,比如獲取Iterator對(duì)象,然后輸出全部值。 下面例子11使用了

30、散列映射慣用方法,并遍歷了散列映射。第38頁(yè) 4HashMap泛型類(lèi)實(shí)現(xiàn)接口 HashMap泛型類(lèi)實(shí)現(xiàn)了泛型接口Map,HashMap類(lèi)中絕大部分方法都是Map接口方法實(shí)現(xiàn)。編程時(shí),能夠使用接口回調(diào)技術(shù),即把HashMap對(duì)象引用賦值給Map接口變量,那么接口就能夠調(diào)用類(lèi)實(shí)現(xiàn)接口方法。 返回第39頁(yè)7.7 TreeSet泛型類(lèi) TreeSet 類(lèi)是實(shí)現(xiàn)Set接口類(lèi),它大部分方法都是接口方法實(shí)現(xiàn)。TreeSet 泛型類(lèi)創(chuàng)建對(duì)象稱(chēng)作樹(shù)集,比如 TreeSet tree= TreeSet (); 那么,tree就是一個(gè)能夠存放Student類(lèi)型數(shù)據(jù)集合,tree能夠調(diào)用add(String s)方法

31、將Student類(lèi)型數(shù)據(jù)添加到樹(shù)集中,存放到樹(shù)集中對(duì)象按對(duì)象串表示升序排列。以下是TreeSet 類(lèi)慣用方法: 第40頁(yè) public boolean add(E o) 向樹(shù)集添加加對(duì)象,添加成功返回true,不然返回false。 public void clear() 刪除樹(shù)集中全部對(duì)象。 public void contains(Object o) 假如包含對(duì)象o方法返回true,不然返回false 。 public E first() 返回樹(shù)集中第一個(gè)對(duì)象(最小對(duì)象)。 public E last() 返回最終一個(gè)對(duì)象(最大對(duì)象)。第41頁(yè) public isEmpty() 判斷是否是空

32、樹(shù)集,假如樹(shù)集不含對(duì)象返回true 。 public boolean remove(Object o) 刪除樹(shù)集中對(duì)象o。 public int size() 返回樹(shù)集中對(duì)象數(shù)目。 但很多對(duì)象不適合按著字符串排列大小。對(duì)象調(diào)用toString()方法就能夠取得自己字符串表示,比如一個(gè)文本框(TextField)字符串表示是: java.awt.TextFieldtextfield0,0,0,0 x0,invalid,text=,editable,selection=0-0 假如讓文本框按著字符串來(lái)比較大小似乎無(wú)任何意義。 第42頁(yè) 我們?cè)趧?chuàng)建樹(shù)集時(shí)可自己要求樹(shù)集中對(duì)象按著什么樣“大小”次序排列

33、。假如我們有四個(gè)學(xué)生對(duì)象,他們有姓名和成績(jī),我們想把這四個(gè)對(duì)象添加到樹(shù)集中,并按著成績(jī)高低排列,而不是按著姓名字典序排列節(jié)點(diǎn)。 首先創(chuàng)建學(xué)生Student類(lèi)能夠?qū)崿F(xiàn)接口:Comparable。Comparable接口中有一個(gè)方法: public int compareTo(Object b); Student類(lèi)經(jīng)過(guò)實(shí)現(xiàn)這個(gè)接口來(lái)要求它創(chuàng)建對(duì)象大小關(guān)系,以下所表示: 第43頁(yè)class Student implements Comparable int english=0; String name; Student(int e,String n) english=e;name=n; public int compareTo(Object b) Student st=(Student)b; return (this.english-st.english); 第44頁(yè) Comparator是java.util包中一個(gè)接口,compare是接口中方法,所以匿名類(lèi)方法體必須實(shí)現(xiàn)接口中方法(相關(guān)匿名類(lèi)可參見(jiàn)第5章,13節(jié))。當(dāng)mytree每次添加對(duì)象時(shí),都會(huì)再調(diào)用接口中方法實(shí)現(xiàn)對(duì)象大小相互比較,mytree調(diào)用接口方法過(guò)程對(duì)編程人員是不可見(jiàn),Sun企業(yè)在編寫(xiě)開(kāi)發(fā)TreeSet類(lèi)時(shí)已經(jīng)實(shí)現(xiàn)了這一機(jī)制。 下面例子12把Student對(duì)象添加到樹(shù)集中,并按著成績(jī)高低排列。第

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論