I學霸官方免費教程三十四:Java集合架構之泛型集合

來源:互聯網
上載者:User

標籤:java集合架構   泛型集合   list集合   set集合   map集合   java免費教程   

泛型集合

泛型集合不是指某種集合,而是指在集合的基礎上增加了泛型。
泛型集合中,一旦傳入了泛型參數“類A”;則只能向這個集合中添加類A或類A子類的對象,不能添加其他對象了。
從泛型集合中擷取對象時,對象的類型是類A,而不是Object類型的對象了。

泛型List

例如:上面說到的兩種List集合,都可以加入泛型

package collection.list.arrayList;import java.util.ArrayList;import java.util.List;/** * 示範泛型集合的使用 * @author 學霸聯盟 - 趙燦 */public class GenericListDemo {public static void main(String[] args) {//建立對象Father f = new Father();Son s = new Son();/******************* 未使用泛型的集合 ********************///父類List的引用指向子類ArrayList的對象,多態的應用List list = new ArrayList();//將上面建立的兩個對象加入到集合中//任何對象都可加入list.add(f);list.add(s);//想要使用對象中特有的成員時,必須強制類型轉換Father f1 = (Father) list.get(0);f1.work();Son s1 = (Son) list.get(1);s1.play();/******************* 使用了泛型的集合 ********************/System.out.println("-----------------------------");/* * 建立泛型集合對象,可以使用ArrayList,也可以使用LinkedList * 注意: * 1、泛型只能使用參考型別,不能使用基礎資料型別 (Elementary Data Type) * 例如:List<int>是錯誤的 * 2、List<Father>和ArrayList<Father>存在繼承關係 * 但是ArrayList<Father>和ArrayList<Son>是完全不同的兩種類型 * 也不存在繼承關係 * 例如:List<Father> fatherList = new ArrayList<Son>(); * ArrayList<Father> fatherList = new ArrayList<Son>(); * 都是錯誤的 */List<Father> fatherList = new ArrayList<Father>();List<Son> sonList = new ArrayList<Son>();//使用泛型後,該fatherList集合只能儲存Father類型//除了Father以外的任何類型都不能添加到該集合中fatherList.add(f);//使用泛型後,該sonList集合只能儲存Son類型sonList.add(s);//擷取元素時無需強制類型轉換Father f2 = fatherList.get(0);f2.work();Son s2 = sonList.get(0);s2.play();}}class Father{public void work(){System.out.println("工作");}}class Son extends Father{public void play(){System.out.println("玩耍");}}運行結果:工作玩耍-----------------------------工作玩耍


泛型Set

package collection.set.hashSet;import java.util.HashSet;import java.util.Set;/** * 示範泛型Set集合 *  * @author 學霸聯盟 - 趙燦 */public class GenericSetDemo {public static void main(String[] args) {//建立HashSet對象Set<String> set = new HashSet<String>();//泛型規定只能加入String類型,所以此處不能加入其他類型的元素set.add("張三");set.add("李四");set.add("張三");//使用了泛型String類型,所以此處泛型集合set中取出的就是String類型for(String str : set){System.out.println(str);}}}運行結果:李四張三


泛型Map

package map.hashMap;import java.util.HashMap;import java.util.Map;/** * 示範加入泛型後的Map集合 *  * 當使用多個泛型,預留位置中間使用英文格式的逗號隔開 * 例如:Map<K,V> * 使用時也是按照位置順序對應傳入 * 例如:Map<String,Integer> * 其Map類中所有的K都會被替換成String * 所有的V都會被替換成Integer * 當想集合中儲存值是也要對應資料類型 *  * @author 學霸聯盟 - 趙燦 */public class GenericMapDemo {public static void main(String[] args) {//建立泛型MapMap<String,Integer> map = new HashMap<String,Integer>();/* * 由於建立對象map時使用了泛型 * 所以添加值時只能添加對應的資料類型值 */map.put("張三", 18);map.put("李四", 26);map.put("王五", 23);/* * 根據key的值擷取對應value的值 * 使用泛型後無需強制類型轉換 */int age = map.get("張三");System.out.println("張三的年齡是:" + age);}}運行結果:張三的年齡是:18


泛型集合總結

文法格式:集合類名A<類名B> 
作用:集合A中只能儲存類型B的資料
        聲明並建立對象:List<String> list = new ArrayList<String>()
注意:1、集合<父類> 和 集合<子類> 是不相容的兩種類型
     2、集合<父類> 的對象中,可以儲存子類對象;反之,則不能通過
     3、加入泛型集合中的元素類型,只能是泛型規定的類型或其子類
              4、從泛型集合中取出元素的類型,就是泛型規定的類型

本文出自 “學霸聯盟教育官方部落格” 部落格,轉載請與作者聯絡!

I學霸官方免費教程三十四:Java集合架構之泛型集合

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.