




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Day18總結1、 泛型類:在寫容器之前想要容器中要存什么?所以要先寫好泛型Eg:TreeSet<Person> ts=new TreeSet<Person>();有了泛型后強制轉換就沒有用Eg:public class Person implements Comparator<Person>對于下面覆蓋的它的compare方法就不用強制轉換了。Public int compare(Person p)這里就不用在做強制轉換了。實現代碼:Public static void main(String args)Tool t=new Tool();t.setObj
2、ect(new Cat();t.setObject(new Dog();這時編譯會出現沒問題,但是運行時會出現錯誤,因為發生了類型轉換異常,dog不能轉換成Cat。Cat c=(Cat)t.getObject();Tool<Cat> t=new Tool<Cat>();t.setObject(newCat();此時就不用強轉了t.setObject(new Dog():此時編譯就失敗,把運行時的異常轉到編譯時候。Class CatClass Dog/*Class ToolPrivate Object obj;Public void setObject(Object ob
3、j)This.obj=obj;Public Object getObject()Return obj;*/改進后ClassTool<T>Private T t;Public void setObject(T t)This.t=t;Public T getObject()Return t;總結:這就是將泛型定義在類上,這個類稱為泛型類,是一種替代Object類的一種技術,因為Object類有自動類型提升和轉換,泛型已經替代它做了,編譯時期更安全,省去了強轉的麻煩。什么時候使用泛型類?當類中要操作的引用數據類型不確定的時候,以前使用的是共性類型Object現在可以使用泛型來解決,比Ob
4、ject更為安全。2、 泛型方法:既然類中的方法操作類型不確定,其實可以將泛型定義在方法上。實現代碼:Tool<String> t=new Tool2<String>>();T.show(new Integer(5);編譯失敗,因為類型不一致。Tool2<Integer> t1=new Tool2<Integer>();這樣便可以操作Integer類型的對象了。T.show();Class Tool2<T>顯示對象的打印結構,可是對象不確定,所以使用Object,而現在可以使用泛型解決。<W>void show(W
5、obj)Sop(obj);當靜態方法的時候,如果方法是靜態的是無法訪問類上定義的泛型的,如果該方法還需要泛型,必須將泛型定義在方法上,Static <Y> void staticMethod(Y t)泛型定義在方法上時只能放在返回值的前面和修飾符的后面什么時候使用泛型方法?當方法操作的引用數據類型不確定的時候就使用方法。3、 泛型接口:實現代碼:Interface Inter<T>void show(T t);Class InterImpl implements Inter<String>Public void show(String str)Sop(str
6、);不明確的時候用上面這種,但是當我們明確了類型時候使用下面的這種情況Class InterImpl<W> implements Inter<w>Public void show(W w)Public static void main(String args)New InterImpl().show("hehe");4、 泛型通配符:不帶泛型也是可以的,因為新的可以兼容前面的,因為泛型擦除之后它還是Object注意區分T t代表某一種實現代碼:Public static void main(String args)ArrayList<Stude
7、nt> al=new ArrayList<Student>();Al.add(new Student("lisi",21);Al.add(new Student("lisi2",22);Al.add(new Student("lisi3",23);ArrayList<Worker> al2=new ArrayList<Worker>();Al.add(new Student("lisiso",23);Al.add(new Student("lisiss"
8、,23);Al.add(new Student("lisisdsdf",23);ArrayList<String> al3=new ArrayList<String>();printCollection(a1);printCollection(a2);Public static void printCollection(Collection<? Super Student> coll)Iterator<? Super Student> it=coll.iterator();While(it.hasNext()Student s
9、tu=it.next();Student p=it.next();Sop(p.getName()+p.age();Object obj=it.next();Sop(obj.toString();對集合中的元素進行迭代的功能,因為打印集合中的元素類型是不確定的,無法明確,可以使用泛型中的通配符來完成,該通配符用?來標示,如果要對操作的類型進行限定,只操作一部分類型時,可以使用泛型的高級功能,泛型的限定。? Extends E:可以接收E類型和E的子類型。? Super:可以接收了性或者的父類型。實現代碼:Public static void printCollection(Collection&
10、lt;? Extedns Person> coll)Iterator<? extends Person> it = coll.iterator();while(it.hasNext()/Student stu = it.next();Person p = it.next();System.out.println(p.getName()+"-"+p.getAge();5、 什么時候使用E extends?一般在存儲具體引用類型時使用這種情況,因為存儲E類型或者E類型的子類,這時可以保證類型是安全的。實現代碼:public static void main(S
11、tring args) Collection<Person> coll = new ArrayList<Person>();coll.add(new Person("abc1",21);coll.add(new Person("abc2",22);Collection<Student> coll2 = new ArrayList<Student>();coll2.add(new Student("lisi1",31);coll2.add(new Student("lisi2&q
12、uot;,32);coll2.add(new Student("lisi3",33);Collection<Worker> coll3 = new ArrayList<Worker>();coll3.add(new Worker("lisi11",31);coll3.add(new Worker("lisi22",32);coll.addAll(coll2);coll.addAll(coll3);Iterator<Person> it = coll.iterator();while(it.hasNe
13、xt()Person stu = it.next();System.out.println(stu.getName();6、 泛型下限:下限什么時候用?從集合中取出對象進行操作時,可以使用下限。比如:比較器。無論集合中的元素對象的類型是什么,只要比較器的指定的類型可以接受這些對象完成比較,就可以了。所以比較器的類型,可以是集合中當前元素的類型,也是可以該元素類型的父類型。實現代碼:public static void main(String args) TreeSet<Student> ts = new TreeSet<Student>(new ComparatorNa
14、me();ts.add(new Student("lisi1",21);ts.add(new Student("lisi2",28);ts.add(new Student("lisi9",23);ts.add(new Student("lisi7",27);TreeSet<Worker> ts2 = new TreeSet<Worker>(new ComparatorName();ts2.add(new Worker("lisi11",41);ts2.add(new Wo
15、rker("lisi22",48);ts2.add(new Worker("lisi99",43);ts2.add(new Worker("lisi77",47);printCollection(ts);printCollection(ts2);/ArrayList<String> al = new ArrayList<String>();/ArrayList<Integer> al2 = new ArrayList<Integer>();/al.containsAll(al2);/&q
16、uot;abc".equals(8);/* * param ts2 */public static void printCollection(TreeSet<? extends Person> ts2) Iterator<? extends Person> it = ts2.iterator();while(it.hasNext()Person p = it.next();System.out.println(p.getName()+":"+p.getAge();class ComparatorName implements Compara
17、tor<Person>Overridepublic int compare(Person o1, Person o2) /Person o1 = new Student("lisi1",21)int temp = o1.getName().compareTo(o2.getName();return temp=0?o1.getAge()-o2.getAge():temp;/*class ComparatorName implements Comparator<Student>Overridepublic int compare(Student o1,
18、Student o2) int temp = o1.getName().compareTo(o2.getName();return temp=0?o1.getAge()-o2.getAge():temp;class ComparatorName2 implements Comparator<Worker>Overridepublic int compare(Worker o1, Worker o2) int temp = o1.getName().compareTo(o2.getName();return temp=0?o1.getAge()-o2.getAge():temp;*/
19、*Collection<Student> coll = new ArrayList<Student>();TreeSet<Person> ts = new TreeSet<Person>(coll);class TreeSet<E>TreeSet()TreeSet(Collection<? extends E> coll)下限什么時候用?從集合中取出對象進行操作時,可以使用下限。比如:比較器。無論集合中的元素對象的類型是什么,只要比較器的指定的類型可以接受這些對象完成比較,就可以了。所以比較器的類型,可以是集合中當前元素的
20、類型,也是可以該元素類型的父類型。TreeSet(Comparator<? super E> comp)7、 Map集合:特點:1、 它是集合框架中的頂層。2、 它一次存儲一對元素,一個叫鍵,一個叫值,也就是鍵值對。Collection一次存一個,稱為單列集合。Map一次存一對,稱為雙列集合。3、 map集合中必須保證鍵的唯一性。4、 如果存儲鍵值對時,鍵出現重復,新值覆蓋舊值,其實map集合存儲的是映射關系。8、 Map常見的方法:該集合存儲的鍵值對,一對一對的往里存,而且要保證鍵的唯一性。1、添加:put(key,value);putAll()2、刪除:clear();remove(key);根據鍵來刪,因為鍵唯一。3、判斷:containKey():containVlaue();isEmpty();4、獲取:get(Object key);size();獲取長度。values();獲取
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車懸掛系統設計與性能評估考核試卷
- 玉米淀粉在制藥工業中的藥物載體與控釋系統考核試卷
- 一年級語文拼音過關練習題三篇
- 印刷項目管理與執行考核試卷
- 竹材采運市場趨勢預測與決策支持考核試卷
- 介紹春節初二語文作文
- 珠寶首飾企業戰略規劃考核試卷
- 生物多樣性展示教具考核試卷
- 糧油節能減排技術考核試卷
- 洗浴養生食療搭配考核試卷
- 《基于機器視覺的激光焊縫跟蹤系統研究》
- 互聯網行業海外垂類AI專題(8):AI激發SAAS新一輪產品創新周期美股軟件板塊反轉確立
- UL1059標準中文版-2020接線端子UL標準中文版
- 消化道疾病護理
- 2024-2025學年高中政治 第三單元 全面依法治國 第八課 法治中國建設 1 法治國家教案 部編版必修3
- 解讀功能性食品研發
- 2024年衛生專業技術資格考試衛生檢驗技術(初級(師)211)相關專業知識試題及答案指導
- 急性胰腺炎護理查房-5
- 公務用車分時租賃實施方案
- 湖北公務員面試模擬87
- 學校職稱評審工作自查報告
評論
0/150
提交評論