zoukankan      html  css  js  c++  java
  • 泛型-----键值对----映射 hashmap--entry中key value 链表

     

    connection

    map

    集合框架
    * java.util.Collection
    *集合与数组相似,也是可以保存一组元素,并且提供了操作元素的相关方法.
    *collection是所有集合的顶级接口,规定了集合应有的基本功能方法
    *collection下面两个常见的子接口:
    *java.util.List:可重复集,并且有序
    *java.util.Set:不可重复集,大部分实现类无序
    *元素是否重复依靠元素自身equals比较的结果而定

    java5中有泛型,注解,增强循环,自动装箱和自动拆箱

    泛型(generics) 能够在编译期检查出错误

    class cast异常

    编译器

    擦除法----一个参数化的类型经过擦除后会去除参数

    一开始没有泛型时,若集合中添加的元素类型不一致,会增加使用者的责任(需要记住每一个元素的类型,要不然在运行就会报错),而且编译器也无法甄别错误

    泛型的出现就是为了解决上述问题

    所谓泛型,就是为了避免强制转换太频繁,增加开发者负担.

    所以我们用一个方法定义一个泛型,以list为模板可以实例化很多类,如果传错类型会直接编译不通过

    这样子就省去了运行时再发现错误了

    但是问题来了,实例化这么多类,系统会不会受不了呢?

    这是,我们用到一个方法,擦除,即将Arraylist<integer>直接擦除为Arraylist

    所有类型定义为object这个父类,如果你需要转换,设置自动转换类型便可以了

    但是我们又得考虑到实现接口,而且得知道apple是fruit的子类

    但是Arraylist<fruit>不是Arraylist<apple>的父类

    所以推荐使用extends关键字,即<? extends fruit>这种格式来判断

    引入一个通配符

    Arraylist<? extends fruit> list :只能遍历读list,不能向list中加入新的元素

    Arraylist<? super fruit> list : 可以循环遍历,可以向list中加入Apple

     系统分层

  • 相关阅读:
    3.09_面向对象(包、修饰符和内部类)
    3.08_面向对象(多态的概述及其代码体现)
    3.07_面向对象(继承)
    3.06_面向对象(代码块的概述和分类)
    3.05_面向对象(java文档说明书的制作过程)
    3.04_面向对象基础((main方法的格式详细解释)
    3.03_面向对象(static关键字及内存图)
    3.02面向对象(创建一个对象的步骤)
    3.01_面向对象基础(构造方法)
    2.02_Java语言基础(循环结构概述)
  • 原文地址:https://www.cnblogs.com/smallwangmusk/p/9006596.html
Copyright © 2011-2022 走看看