标签:java泛型集合 泛型list 泛型set 泛型map java泛型
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、泛型只能使用引用类型,不能使用基本数据类型 * 例如: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("玩耍"); } } 运行结果: 工作 玩耍 ----------------------------- 工作 玩耍
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); } } } 运行结果: 李四 张三
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) { //创建泛型Map Map<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
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:java泛型集合 泛型list 泛型set 泛型map java泛型
原文地址:http://blog.csdn.net/ixueba/article/details/47447085