• day17_Collection集合 迭代器 增强for循环 泛型


    今日内容

    • Collection集合

    • 迭代器

    • 增强for循环

    • 泛型

    Collection集合

      集合:集合就是一种存储数据的容器,之前的ArrayList集合

      1.集合和数组的区别

    1.数组长度固定。 集合是长度可变的
    2.数组只能存储同一种数据类型,包括基本数据类型和引用数据类型(对象数组)。集合存储的都是对象,而且可以在同一集合中存储不同类型的数据。

      2.集合的分类

    在使用API的时候,先了解其继承与接口的框架,才能了解何时使用哪个类
    
    集合可以根据存储结构将其分为两大类:单列集合:java.util.List。和双列集合:java.util.Set。其中,
    Collection接口有三个实现类:Vector集合,ArrayList集合,LinkedList集合
    Set接口也有三个实现类:TreeSet集合,HashSet集合,LinkedHashSet集合,

      3.其子接口的特点

    Collection是单列集合的根接口,
    List子接口集合的特点是:元素有序,元素可重复,有索引。其子类有上述三种
    Set接口集合特点是:元素不重复,没有索引。其子类也是上述三种。

      4.Collection集合的常用功能【重点】

    public boolean add(E e):把给定的对象添加到当前的集合中
    public void clear():清空集合当中的所有元素。(此删除只是集合中删除,但是内存中还存在)
    public boolean remove(E e):把给定的对象从当前集合中删除掉
    public boolean contains(E e):判断当前集合当中是否包含给定的对象元素
    public boolean isEmpty(): 判断当前集合是否为空
    public int size(): 获取当前集合元素的个数
    public Object[] toArray(): 把当前集合中的元素存储到一个数组当中 

    迭代器(Iterator)接口

        迭代器:java.util.Iterator接口。用于迭代访问Collection和Map接口中的元素。因此,将Iterator称为迭代器。

      1.格式:

    public Iterator iterator(): 获取集合对应的迭代器,用来遍历集合当中的元素。

      2.迭代的概念

    迭代:Collection集合元素的通用获取方式。

      3.常用API方法:

    public E next():获取迭代的下一个元素
    public boolean hasNext():如果集合当中仍有元素可以迭代,则返回true,如果没有,则返回false

      4.迭代器的实现原理

    调用Iterator接口当中的next方法之前,迭代器的索引位于-1,不指向任何元素,
    当第一次调用next方法后,迭代器的索引会向后移动一位,指向第一个元素并将该元素返回,
    当再次调用next方法时,迭代器的索引会指向第二个元素并将该元素返回,以此类推,直到hasNext方法返回false时,表示迭代器达到了集合的末尾,终止对元素的遍历,
    如果强硬的获取没有的元素,此时程序就会抛出java.util.NoSuchElementException
    
    Iterator<E>接口也是有泛型的,迭代的泛型是跟着集合一样,集合定义什么类型,迭代器就是什么类型。

    增强for循环

      JDK1.5之后的高级循环结构:for each 循环,只能用来遍历数组和集合。内部原理是有个迭代器Iterator,在迭代过程中,不能对集合当中的元素进行增删操作。

      1.格式

    for(元素的数据类型   变量名  :  Collection集合或者数组的名){
    //操作代码
    //....
    }

    练习:(遍历数组)

    int[] arr={3,5,7,9,12};
    for(int a : arr){
        System.out.println(a);
    }

    (遍历集合)

    Collection <String> coll =new ArrayList<>();
    coll.add("姚明");
    coll.add("科比");
    ...
    ...
    for(String str : coll){
        System.out.println(str);//str 表示集合中的每个元素
    }

    泛型

    预支类或者方法中的未知数据类型。是一个数据类型,可以看做是一个接受数据类型的变量。

    泛型也是数据类型的一部分,一般我们将类名和泛型合并一起看作数据类型。

      泛型的好处:

    1.避免了类型转换的麻烦,存入什么数据类型,取出就是什么数据类型
    2.运行期异常(跑起来的异常)提升到编译期阶段(写代码的时候就会报错)

      类名使用泛型

    修饰符 class 类名<代表泛型的变量>{
    
    }

      方法定义泛型(方法定义类可以不用定义)

    修饰符<代表泛型的变量> 返回值类型  方法名(参数列表){
    
    }

      接口定义泛型和使用

    修饰符  interface 接口名<代表泛型的变量>{
    
    }

    使用:
    1.定义实现类的时候,可以确认泛型的类型
    public class 实现类名 implements 父接口 <String >{
    
    @Override
    public void add(String e){
    
    //...
    }
    
    }
    
    
    
    2.始终不确定泛型的类型,直到创建对象时
    public class 子实现类名 implement  父接口名<泛型>{
    @Override
    public void add(T t){
    //...
    }
    }

      

  • 相关阅读:
    java集合总结
    css基础:块级元素与行内元素
    第九周web作业:history of grammar
    正则表达式(regular expression rules)
    用indexOf查找字符出现次数
    DOM与BOM的概念
    css的单位以及调色法
    获取登录cookieColletion在cef里面打开网页
    引用CefSharp编译支持AnyCpu的办法
    解决H5移动端history.back无效
  • 原文地址:https://www.cnblogs.com/rxqq/p/14070799.html
Copyright © 2020-2023  润新知