zoukankan      html  css  js  c++  java
  • 迭代器(Iterator迭代器、增强for)

    1、迭代器

    Java中有的多的集合,他们的底层数据结构是不同的,因此在集合遍历的时候采取的方式也各不相同,迭代器抽取出了集合的共有功能,出现了Iterator接口。在遍历集合的时候不用在意集合的具体内部结构。

    迭代器方法:

     2、迭代方式

    (1)创建Person类:

    public class Person {
        private String name;
        private int age;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            if (age >= 0 || age <= 200)
                this.age = age;
        }
    
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
    }

    (2)创建IteratorDemo类,包含遍历集合的三种方法:

    import java.util.ArrayList;
    import java.util.Iterator;
    
    public class IteratorDemo {
        public void addPerson(ArrayList<Person> array) {
            Person p1 = new Person("张三", 12);
            Person p2 = new Person("李明", 14);
            Person p3 = new Person("李华", 23);
            Person p4 = new Person("吴佩佩", 2);
            Person p5 = new Person("王涛", 15);
            array.add(p1);
            array.add(p2);
            array.add(p3);
            array.add(p4);
            array.add(p5);
        }
    
        // 运用一般的方法遍历集合
        public void printPerson(ArrayList<Person> array) {
            System.out.println("运用一般的方法遍历集合:");
            for (int i = 0; i < array.size(); i++) {
                Person p = array.get(i);
                System.out.println(p.getName() + "  " + p.getAge());
            }
        }
    
        // 运用迭代器方法遍历集合
        public void iteratorPrint(ArrayList<Person> array) {
            System.out.println("迭代器方法遍历集合:");
            Iterator<Person> listIt = array.iterator();//获取集合的实现类对象,病调用集合的iterator()
            while (listIt.hasNext()) {
                Person per = listIt.next();
                System.out.println(per.getName() + " " + per.getAge());
            }
        }
    
        // 运用增强for对集合遍历
        public void forPrint(ArrayList<Person> array) {
            System.out.println("增强for对集合进行遍历:");
            for (Person per : array) {//for(数据类型 变量名:数组或集合)
                System.out.println(per.getName() + " " + per.getAge());
            }
        }
    
    }
    import java.util.ArrayList;
    
    public class Test {
        public static void main(String[] args) {
            ArrayList<Person> array = new ArrayList<Person>();// 调用添加方法
            IteratorDemo it = new IteratorDemo();
            it.addPerson(array);// 调用遍历集合
            it.printPerson(array);
    
            it.iteratorPrint(array);
    
            it.forPrint(array);
        }
    }

    运行结果:

    在遍历同一集合时,虽然采取了不同的方法,但是结果是相同的。

    (3)三种遍历方法的特点:

    普通方法:不同的集合需要不同的方法去实现,不能实现底层结构与遍历的分离。

    Iterator迭代器:

    • 能实现底层结构与遍历的分离,适合于遍历链式结构。在迭代器迭代的过程中,禁止对集合进行更改,因为迭代器在迭代之前已经被创建出来了。
    • 能够调用迭代器的remove方法进行删除操作,不能进行增改操作

    增强for:

    • 能够节省代码量。但是增强for也有弊端,就是不能对容器中的元素进行操作,因为他没有索引。对于数组底层用的是普通的for循环,对于集合用的是Iterator迭代器,适合顺序结构。
    • 不能进行增删改操作

    普通for:

    • 可以进行增删改查操作,但是只有list接口的实现类可以采用这种遍历方式,因为他们有索引
  • 相关阅读:
    tcpdump 命令的常用选项:一
    Centos系统中 Systemd 的Unit文件配置说明
    如何使用PowerShell获取物理磁盘的信息
    tcpdump 命令的常用选项:二
    Google报告:大量被入侵的 Google Cloud 实例被用来挖掘加密货币
    Ubuntu中使用pdftk合并、分离PDF文档等操作
    tcpdump 命令的常用选项:三
    优麒麟Ubuntu Kylin 20.04 Pro SP1 上线
    为SSH登录设置电子邮件提醒
    图片上传并显示(兼容ie),图片大小判断
  • 原文地址:https://www.cnblogs.com/zhai1997/p/11356016.html
Copyright © 2011-2022 走看看