Java学习笔记-泛型

注:这里只简单介绍了一下泛型最基础的使用,泛型功能很强大,为了赶课程,关于通用类型部分过后补上。别被我的笔记所误导 。

课程中的泛型首先是由泛型集合开始入手的。由前边的两个集合ArrayList和HashMap可以看出,在使用方便的同时也带来了很多问题。

1,效率低下,集合都是Object的类型,使用是需要频繁的装箱,拆箱(数据类型转换)。

2,安全性低,Object型是一个很大的范围,写代码时不会报错,但实际使用中,类型转换时可能出现无法转换造成的不可预知的错误。

         例:ArrayList list=new ArrayList();

                        list.add(1);

list.add(2);

.......

                        list.add(n);

int sum=0;

                 for ( int i=1;i<list.size();i++){

int num=(Integer)list.get(i);//list是Object型必须转换成int类型进行计算

               sum+=num;

}

/**这样使用没有任何问题,1,传入数据从int型转换成Object型存入list,使用时还要从Object转换回来这样就大大减低了效率。2,实际使用中的数据不可能由程序员控制,add的类型完全是int型,如果出现add(“aaaa”),那么下边的for循环就会出现错误,造成整个系统的崩溃。这就需要将这种预知错误提前进行排除。从ArrayList定义开始就限制了传入数据必须是Int类型。*/

视频课程中讲解的泛型集合。因此由此引出类泛型集合概念:如ArrayList(integer){ }——这样就限制了传入参数的的格式,这里限制必须是(包装类)类型包括自定义类,而不能是简单的数据类型如(int)。

例:ArrayList<Integer> list=new ArrayList<Integer>();

                        list.add(1);

list.add(2);

.......

                        list.add(n);

int sum=0;

                 for ( int i=1;i<list.size();i++){

//int num=(Integer)list.get(i);

//sum+=num;

                  sum+=list.get(i)

}

//同样是一个例子,通过下边的类型限定,就限制了list中使用的必须是int类型,避免了类型的不匹配和类型转换的过程。既提高了安全性也增加了效率。

        扩展例子:自定义一个类 (以学生为例)Student,包含字段:int studentId  ,String studentName。

                            ArrayList<Student> list=new ArrayList<Student>(); //定义了一个个只能存放Student类的集合

                                   Student student=new Student(0001,“张三”);

                                    list.add(sutdent);                    //这样将一个Student类放入了集合中。 当然例子中可通过循环方式向对list进行多次add操作这里仅以最简单的方法说明。

HashMap泛型只虚要多定义一个index项如:HashMap<integer,student> map=new HashMap<integer,student>();//第一个类型是键,从上边例子的studentId而来因此是Integer类型,后边是Student类型。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值