JAVA基础:Collection集合(接口)与迭代器、增强for循环,详解

Collection接口

Collection也称集合,集合概述:
集合是Java中提供的一种容器,可以用来存储多个数据。
集合与数组的区别:

  • 数组的长度是固定的,集合的长度是可变的。
  • 数组中存储的是同一种类型的元素,可以存储基本数据类型值,集合存储的都是对象。而且对象的类型可以不一致。

集合体系的详解

Collection接口可以分出两个常用子接口,List接口和Set接口,更细分的如图。
在这里插入图片描述

Collection常用方法

Collection是所有单列集合的父接口,因此在Collection中定义单列集合(List和Set)通用的一些方法,
这些方法可以用于所有的单列集合。

  • 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():把集合中的元素,存储到数组中
public class Demo01 {
    public static void main(String[] args) {
        Collection<String> demo = new ArrayList<>();
        demo.add("小李");
        demo.add("小王");
        demo.add("小张");
        System.out.println(demo);//说明重写了toString方法
        boolean re = demo.remove("小张");//移除一个元素
        System.out.println(demo);
        System.out.println(re);//判断移除操作是否成功true
        boolean con = demo.contains("小王");//判断小王,是否是demo对象中的元素
        System.out.println(con);//true
        boolean empty = demo.isEmpty();//判断是不是空
        System.out.println(empty);//false
        int size = demo.size();
        System.out.println(size);//输出长度
        Object[] arr = demo.toArray();//转化成为数组
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
        demo.clear();//清空
        System.out.println(demo);
    }
}

迭代器概述

**迭代:**即Collection集合元素的通用获取方式。(遍历)在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续再判断,如果还有就再取出来。一直把集合中所有元素全部取出。
java.util.Iterator接口:迭代器(对集合遍历)
有两个常用方法

  • boolean hasNext() 如果仍有元素可以迭代,则返回true
    
  •    判断集合中还有没有下一个元素,有就返回true,没有返回false
    
  • E next() 返回迭代的下一个元素
    
  •    取出集合的下一个元素
    

Iterator迭代器,是一个接口,我们无法直接使用,需要使用Iterator接口的实现类对象,获取实现类的方式比较特殊
Collection接口中有一个方法,叫iterator(),这个方法返回的就是迭代器的实现对象。

  •   Iterator<E> iterator() 返回再此collection的元素上进行迭代的迭代器。
    

迭代器的使用步骤:

  • 1.使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)
  • 2.使用Iterator接口中的方法hasNext判断还有没有下一个元素
  • 3.使用Iterator接口中的方法next取出集合中的下一个元素。
public class Demo01 {
    public static void main(String[] args) {
        //创建集合
        Collection<String> coll = new ArrayList<>();
        coll.add("一年级");
        coll.add("二年级");
        coll.add("三年级");
        coll.add("四年级");
        coll.add("五年级");
        /*使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)
        * 注意:
        * Iterator<E>接口也是有泛型的,迭代器的泛型跟着集合走,集合是什么泛型,迭代器就是什么泛型*/
        //多态      接口           实现类对象
        Iterator<String> it = coll.iterator();
        /*
        * 发现使用迭代器取出集合中元素的代码,是一个重复的过程
        * 所以我们可以使用循环优化
        * 不知道集合中有多少元素,使用while循环
        * 循环结束的条件,hasNext方法返回false*/
        //遍历集合
        while (it.hasNext()){
            String a = it.next();
            System.out.println(a);
        }
    }
}

增强For循环

增强for循环(for each)是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它内部的原理就是一个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。

  • 格式:
  •   for(集合或数组的数据类型  变量名 : Collection集合或数组){
    
  •       //操作代码
    
  • }
  • 通常只遍历元素,不在这过程中进行元素的增删操作
public class Demo02ForEach {
    public static void main(String[] args) {
        demo02();
    }

    private static void demo02() {
        //对集合进行遍历
        ArrayList<String> a = new ArrayList<>();
        a.add("AAA");
        a.add("bbb");
        a.add("ccc");
        a.add("dd");
        for (String b : a ) {
            System.out.println(b);
        }
    }

    private static void demo01() {
        //对数组进行遍历
        int[] arr = {1,2,3,4,5};
        for (int i: arr) {
            System.out.println(i);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值