zoukankan      html  css  js  c++  java
  • Collection集合+迭代器+foreach循环

    01_Collection集合概述

     数组:  int[ ] arr=new int[10];

          Student[ ] arr=new  Student[3];

    集合: ArrayList<Student> <String> <Integer>

    ====================================================================================================================

    02_集合框架介绍

     

     

     =========================================================================================================================

    03_Collection集合常用功能

     Demo01Collection.java

    package com.itheima.demo01.Collection;

    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.HashSet;

    /*
    java.util.Collection接口
    所有单列集合的最顶层的接口,里边定义了所有单列集合共性的方法
    任意的单列集合都可以使用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(): 把集合中的元素,存储到数组中。
    */
    public class Demo01Collection {
    public static void main(String[] args) {
    //创建集合对象,可以使用多态
    //Collection<String> coll = new ArrayList<>();
    Collection<String> coll = new HashSet<>();
    System.out.println(coll);//重写了toString方法 []

    /*
    public boolean add(E e): 把给定的对象添加到当前集合中 。
    返回值是一个boolean值,一般都返回true,所以可以不用接收
    */
    boolean b1 = coll.add("张三");
    System.out.println("b1:"+b1);//b1:true
    System.out.println(coll);//[张三]
    coll.add("李四");
    coll.add("李四");
    coll.add("赵六");
    coll.add("田七");
    System.out.println(coll);//[张三, 李四, 赵六, 田七]

    /*
    public boolean remove(E e): 把给定的对象在当前集合中删除。
    返回值是一个boolean值,集合中存在元素,删除元素,返回true
    集合中不存在元素,删除失败,返回false
    */
    boolean b2 = coll.remove("赵六");
    System.out.println("b2:"+b2);//b2:true

    boolean b3 = coll.remove("赵四");
    System.out.println("b3:"+b3);//b3:false
    System.out.println(coll);//[张三, 李四, 田七]

    /*
    public boolean contains(E e): 判断当前集合中是否包含给定的对象。
    包含返回true
    不包含返回false
    */
    boolean b4 = coll.contains("李四");
    System.out.println("b4:"+b4);//b4:true

    boolean b5 = coll.contains("赵四");
    System.out.println("b5:"+b5);//b5:false

    //public boolean isEmpty(): 判断当前集合是否为空。 集合为空返回true,集合不为空返回false
    boolean b6 = coll.isEmpty();
    System.out.println("b6:"+b6);//b6:false

    //public int size(): 返回集合中元素的个数。
    int size = coll.size();
    System.out.println("size:"+size);//size:3

    //public Object[] toArray(): 把集合中的元素,存储到数组中。
    Object[] arr = coll.toArray();
    for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
    }

    //public void clear() :清空集合中所有的元素。但是不删除集合,集合还存在
    coll.clear();
    System.out.println(coll);//[]
    System.out.println(coll.isEmpty());//true
    }
    }

     =========================================================================================================

    04_Iterator接口介绍

    集合有许多种,每个集合的存和取都不一样,因此遍历每一个集合需要定义不同的取的方式,就太繁琐了

    因此,就出现了通用的集合取出元素的方式,迭代器Iterator

     

     ===================================================================================================================

     05_迭代器的代码实现

    package com.itheima.demo02.Iterator;

    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;

    /*
    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 Demo01Iterator {
    public static void main(String[] args) {
    //创建一个集合对象
    Collection<String> coll = new ArrayList<>();
    //往集合中添加元素
    coll.add("姚明");
    coll.add("科比");
    coll.add("麦迪");
    coll.add("詹姆斯");
    coll.add("艾弗森");

    /*
    1.使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)
    注意:
    Iterator<E>接口也是有泛型的,迭代器的泛型跟着集合走,集合是什么泛型,迭代器就是什么泛型
    */
    //多态 接口 实现类对象
    Iterator<String> it = coll.iterator();


    /*
    发现使用迭代器取出集合中元素的代码,是一个重复的过程
    所以我们可以使用循环优化
    不知道集合中有多少元素,使用while循环
    循环结束的条件,hasNext方法返回false
    */
    while(it.hasNext()){
    String e = it.next();
    System.out.println(e);
    }
    System.out.println("----------------------");

    //for循环取的,了解就行
    for(Iterator<String> it2 = coll.iterator();it2.hasNext();){
    String e = it2.next();
    System.out.println(e);
    }


    /* //2.使用Iterator接口中的方法hasNext判断还有没有下一个元素
    boolean b = it.hasNext();
    System.out.println(b);//true
    //3.使用Iterator接口中的方法next取出集合中的下一个元素
    String s = it.next();
    System.out.println(s);//姚明

    b = it.hasNext();
    System.out.println(b);
    s = it.next();
    System.out.println(s);

    b = it.hasNext();
    System.out.println(b);
    s = it.next();
    System.out.println(s);

    b = it.hasNext();
    System.out.println(b);
    s = it.next();
    System.out.println(s);

    b = it.hasNext();
    System.out.println(b);
    s = it.next();
    System.out.println(s);

    b = it.hasNext();
    System.out.println(b);//没有元素,返回false
    s = it.next();//没有元素,在取出元素会抛出NoSuchElementException没有元素异常
    System.out.println(s);*/
    }
    }

    ==================================================================================================================

    06_迭代器的实现原理

     =========================================================================================================================

    07_增强for循环

     

    package com.itheima.demo02.Iterator;

    import java.util.ArrayList;

    /*
    增强for循环:底层使用的也是迭代器,使用for循环的格式,简化了迭代器的书写
    是JDK1.5之后出现的新特性
    Collection<E>extends Iterable<E>:所有的单列集合都可以使用增强for
    public interface Iterable<T>实现这个接口允许对象成为 "foreach" 语句的目标。

    增强for循环:用来遍历集合和数组

    格式:
    for(集合/数组的数据类型 变量名: 集合名/数组名){
    sout(变量名);
    }
    */
    public class Demo02Foreach {
    public static void main(String[] args) {
    demo02();
    }

    //使用增强for循环遍历集合
    private static void demo02() {
    ArrayList<String> list = new ArrayList<>();
    list.add("aaa");
    list.add("bbb");
    list.add("ccc");
    list.add("ddd");
    for(String s : list){
    System.out.println(s);
    }
    }

    //使用增强for循环遍历数组
    private static void demo01() {
    int[] arr = {1,2,3,4,5};
    for(int i:arr){
    System.out.println(i);
    }
    }
    }

  • 相关阅读:
    poj3720
    poj3099
    poj3734
    poj3112
    poj3723
    十二个开源UML工具推荐
    关于大型asp.net应用系统的架构—如何做到高性能高可伸缩性
    读《中央确定西部新十年战略》有感
    DirectShow基础编程 最简单的源Filter的编写步骤
    Access2007无法执行查询,操作或事件已被禁用模式阻止
  • 原文地址:https://www.cnblogs.com/curedfisher/p/12420663.html
Copyright © 2011-2022 走看看