zoukankan      html  css  js  c++  java
  • Collection、Iterator、泛型初步

    java.util.Collection 集合层次的根接口
      java.util.List extends Collection
        ArrayList implements List
          常用方法
            boolean add(E e) //添加元素
            boolean remove(Object o) //删除元素
            void clear() //清空元素
            boolean contains(Object o) //判断是否包含某元素
            boolean isEmpty() //判断是否为空
            int size() //获取集合长度

    Collection集合的迭代
    Iterator<E> iterator() //获取集合专属的迭代器
        抽象方法,但是Collection集合的实现类一定会重写此方法
        方法返回的是一个接口,重写后的方法,返回的肯定是这个接口的实现类对象
    Iterator接口
        1.抽象方法
          boolean hasNaxt() 判断有没有下一个元素
          E next() 获取元素,使用一次指针向下移动一次
        2.实现类
          通过Collection的iterator()方法可以获取Iterator的实现类
          Iterator it = c.iterator();

        并发修改异常
        java.util.ConcurrentModificationException
        当迭代器正在迭代集合时,集合对象改变了集合的长度就会报此异常(迭代器本身的方法对元素长度进行操作就不会,但不建议使用)

    增强for循环;底层是一个迭代器
    只能用来迭代数组和集合
        for(集合中存储的数据类型 变量名 : 要遍历的集合名){
          System.out.println(变量名);     //不用索引了,所以如果要用到索引进行操作的还是用以前的循环
        }

    泛型:
      不指定泛型
      容易报类型转换异常(ClassCastException)
      加入泛型的好处
        1.可以将运行时异常提前到编译期
        2.避免了使用向下转型

      定义泛型类
        public class 类名<接收泛型的变量(自定义名)>
        创建对象时确定下来泛型的数据类型

      定义泛型的方法
        public static <E> void method(E e){

        }
        在调用方法确定数据类型

      定义泛型接口
        public interface MyInterface<E>{  
        }
        A:定义实现类的时候确定
        B:定义实现类的时候继续使用泛型,创建对象的时候确定数据类型

      数据类型 = 类名 + 泛型
        方法使用泛型:
        在没有确定数据类型的时候:
          public static <E> void method(E e){

          }
        在没有确定泛型的时候,确定了类名
          public static void method(ArrayList<?> list){

          }

      泛型通配符:
       ? extends 父类 //只能是父类及其子类
       ? super 子类 //只能是子类和其父类

  • 相关阅读:
    百度前端技术学院task35源代码——听指令的小方块3
    百度前端技术学院task34源码——会指令的小块2
    ManyToManyField 增加记录
    同一个页面多个按钮,根据按钮名字执行相应功能
    django 函数装饰器 变为 类装饰器
    script 跳出小窗口
    django 把函数装饰器变为方法装饰器
    modelform添加属性
    Cannot assign “A1”: “B1” must be a “C1” instance.
    Django form choices, placeholder
  • 原文地址:https://www.cnblogs.com/chonglchong/p/6637465.html
Copyright © 2011-2022 走看看