CY摸魚java筆記031

迭代器(Iterator)
迭代器是一種設(shè)計(jì)模式,它是一個(gè)對(duì)象,它可以遍歷并選擇序列中的對(duì)象,而開發(fā)人員不需要了解該序列的底層結(jié)構(gòu)。迭代器通常被稱為“輕量級(jí)”對(duì)象,因?yàn)閯?chuàng)建它的代價(jià)小。
Java中的Iterator功能比較簡(jiǎn)單,并且只能單向移動(dòng):
(1) 使用方法iterator()要求容器返回一個(gè)Iterator。第一次調(diào)用Iterator的next()方法時(shí),它返回序列的第一個(gè)元素。注意:iterator()方法是java.lang.Iterable接口,被Collection繼承。
(2) 使用next()獲得序列中的下一個(gè)元素。
(3) 使用hasNext()檢查序列中是否還有元素。
(4) 使用remove()將迭代器新返回的元素刪除。
Iterator是Java迭代器最簡(jiǎn)單的實(shí)現(xiàn),為L(zhǎng)ist設(shè)計(jì)的ListIterator具有更多的功能,它可以從兩個(gè)方向遍歷List,也可以從List中插入和刪除元素。
迭代器應(yīng)用:
?list l = new ArrayList();
?l.add("aa");
?l.add("bb");
?l.add("cc");
?for (Iterator iter = l.iterator(); iter.hasNext();) {
??String str = (String)iter.next();
??System.out.println(str);
?}
?/*迭代器用于while循環(huán)
?Iterator iter = l.iterator();
?while(iter.hasNext()){
??String str = (String) iter.next();
??System.out.println(str);
?}
?*/
List集合類與Map集合類的區(qū)別:
鍵值:能唯一標(biāo)識(shí)某一事物的值稱為鍵值。
(注意:鍵值是為了唯一標(biāo)識(shí)事物而單獨(dú)添加的屬性,一定不要用事物本身的屬性來(lái)做鍵值。)
?List沒(méi)有鍵值,Map有鍵值。
ArrayList和HashMap都是線程異步的,所以他們的特點(diǎn)是效率高,但是安全性低。
Vector和Hashtable都是線程同步的,所以他們的特點(diǎn)是效率低,但安全性高。
泛型和反射機(jī)制:
由于類型轉(zhuǎn)換的錯(cuò)誤,Java虛擬機(jī)在編譯時(shí)不會(huì)報(bào)錯(cuò),而在運(yùn)行時(shí)報(bào)錯(cuò),所以安全隱患非常明顯,為此我們需要用發(fā)型來(lái)彌補(bǔ)這一問(wèn)題,有了發(fā)型,我們?cè)诩项愔刑砑訉?duì)象的時(shí)候就不會(huì)用強(qiáng)制轉(zhuǎn)換了。
反射機(jī)制是將泛型固定的類的所有方法和成員全部可以顯示以供程序員可以確定程序的編寫是否有錯(cuò)誤的機(jī)制。