java iwap框架,I学霸官方免费课程三十四:Java集合框架之泛型集合

I学霸官方免费教程三十四: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、泛型只能使用引用类型,不能使用基本数据类型

* 例如:List是错误的

* 2、List和ArrayList存在继承关系

* 但是ArrayList和ArrayList是完全不同的两种类型

* 也不存在继承关系

* 例如:List fatherList = new ArrayList();

* ArrayList fatherList = new ArrayList();

* 都是错误的

*/

List fatherList = new ArrayList();

List sonList = new ArrayList();

//使用泛型后,该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 set = new HashSet();

//泛型规定只能加入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

* 使用时也是按照位置顺序对应传入

* 例如:Map

* 其Map类中所有的K都会被替换成String

* 所有的V都会被替换成Integer

* 当想集合中存储值是也要对应数据类型

*

* @author 学霸联盟 - 赵灿

*/

public class GenericMapDemo {

public static void main(String[] args) {

//创建泛型Map

Map map = new HashMap();

/*

* 由于创建对象map时使用了泛型

* 所以添加值时只能添加对应的数据类型值

*/

map.put("张三", 18);

map.put("李四", 26);

map.put("王五", 23);

/*

* 根据key的值获取对应value的值

* 使用泛型后无需强制类型转换

*/

int age = map.get("张三");

System.out.println("张三的年龄是:" + age);

}

}

运行结果:张三的年龄是:18

泛型集合总结

语法格式:集合类名A

作用:集合A中只能存储类型B的数据

声明并创建对象:List list = new ArrayList()

注意:1、集合 和 集合 是不兼容的两种类型

2、集合 的对象中,可以存储子类对象;反之,则不能通过

3、加入泛型集合中的元素类型,只能是泛型规定的类型或其子类

4、从泛型集合中取出元素的类型,就是泛型规定的类型

版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值