Collection&泛型学习

1 Collection

(1)集合框架的概念

        1)集合按照存储结果不同,可分为单例(Collection)和双列(Map)集合两类;

        2)Collection集合元素有两个重要的子接口:list和set

            1)List:有序(存和取的元素顺序一样),元素可重复,具有索引

            2)set:无序(存和取的元素顺序不一定一样),不具有索引

        3)Collection的体系结构图

(2)Collection集合的常用方法

    (1)add()  remove()  clear()  size()  

             contains()  isEmpty()   toArray()   iterator()

 

(3)迭代器

      1)迭代器是用来遍历没有所以的集合,例如set集合

      2)Collection接口继承了Iterator(也是集合的一员)接口:使用iterator()获取迭代器接口实例

      3)迭代器原理:创建实例对象后,指针执行迭代集合首元素的前一个位置,然后使用next获取该地址的下一个元素,获取后地址自动加1

 

(4)增强for循环

    1)是一种高级的for循环,底层使用迭代器实现

    2)只能用来遍历,遍历时候不能进行增删操作,否则会报异常

    3)书写的格式较为简洁,开发中比较经常用到

 

2 泛型

      1)泛型概念:是一种引用数据类型约束,在集合中比较常见

      2)泛型的好处

          1)自动进数据类型的转换

          2)将运行时期的类型转换异常提升到编译时期

      3)定义和使用含有泛型的类、方法、接口

          1)定义泛型类的格式:修饰符 class 类名<代表泛型的变量> {  } 

          2) 定义泛型方法的格式:修饰符 <代表泛型的变量> 返回值类型 方法名(参数){  }

          3)接口定义泛型有两种确定形式

               1)在被类实现的时候,确定泛型

               2)在创建对象的时候确定泛型,这个时候类的泛型要跟着接口的泛型

          4)泛型只能传入引用类型,不能传入基本数据类型

      4)泛型通配符(?)

         1)泛型的通配符作用:进行参数传递的时候,不确定使用什么类型进行传递,可以使用通配符

         2)特点

             1)使用通配符时候,不能创建对象使用,只能作为方法参数使用

             2)泛型没有继承的概念,不能使用Object代替所有的泛型

                例子:public static <T> void demo5(Collection<Object> coll){}

                           ArrayList<Integer> list1 = new ArrayList<>();

                           demo5(list);//出错,不能用Object代替所有的泛型

             3)泛型通配符的高级使用

                  1)上限<?extends E>:只能使用类的泛型的子类及其本身

                  2)  下限<? super E>:只能使用泛型的父类及其本身

(5)对于一个泛型类,要获取其类对象(类对象是包含该类类信息的对象,一个类只有一个类对象,但可以有多个类的实例),不能使用指定具体泛型类型后的类去获取类对象,例如不能使用List<Integer>.class去获取类对象,只能是List.class

(6)泛型原理

        1)在编译之后程序会采取去泛型化的措施。也就是说Java中的泛型,只在编译阶段有效。在编译过程中,正确检验泛型结果后,会将泛型的相关信息擦出,并且在对象进入和离开方法的边界处添加类型检查和类型转换的方法。也就是说,泛型信息不会进入到运行时阶段。

                           

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值