迭代器遍历

本文介绍如何在IntelliJ IDEA中使用Ctrl+J快速生成Java集合遍历的while循环,提升编码效率。通过实例演示,了解如何在CollectionIterator类中利用这个快捷键进行迭代操作。

显示IDEA中所有快捷键 ctrl+j

 

 

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

/**
 * @author admin
 * @version 1.0.0
 * @ClassName CollectionIterator.java
 * @Description TODO
 * @createTime 2021年09月10日 16:03:00
 */
public class CollectionIterator {
    public static void main(String[] args) {
        Collection<Object> col = new ArrayList<>();
        col.add(new book("三国演义","张三",10.2));
        col.add(new book("红楼","张四",12.2));
        col.add(new book("六神演义","张五",5.2));
        col.add("jackie");
        System.out.println("col="+col);
        //1.先得到col对应的迭代器
        Iterator<Object> iterator = col.iterator();

        //2.使用while循环遍历
        //此处有快捷键生成while循环,itit
        //显示所有快捷键 ctrl+j
        while(iterator.hasNext()){
            //返回下一个元素,类型是Object
            Object o = iterator.next();
            System.out.println(o);
        }

        //3.当退出循环后这时迭代器指向最后一个元素
        //itretaor.next();//会抛出异常NOSuchElementException

        //4.如果想再次遍历,重置
        iterator=col.iterator();
        System.out.println("第二次遍历");
        while (iterator.hasNext()) {
            Object next =  iterator.next();

        }
    }
}
class book{
    private String name;
    private String author;
    private double price;

    public book() {
    }

    public book(String name, String author, double price) {
        this.name = name;
        this.author = author;
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                '}';
    }
}
在不同的编程语言中,使用迭代器遍历对象的方法有所不同,以下以 JavaScript 和 Java 为例进行说明。 ### JavaScript 中使用迭代器遍历对象 在 ES6 中,迭代器可以统一处理所有集合数据。ES6 创造了新的遍历命令 `for...of` 循环,`Iterator` 接口主要供 `for...of` 消费。示例代码如下: ```javascript // 声明一个数组 const xiyou = ['唐僧', '孙悟空', '猪八戒', '沙僧']; // 使用 for...of 遍历数组 for (let v of xiyou) { console.log(v); } // 手动调用迭代器 let iterator = xiyou[Symbol.iterator](); console.log(iterator.next()); console.log(iterator.next()); console.log(iterator.next()); console.log(iterator.next()); console.log(iterator.next()); ``` 上述代码中,首先使用 `for...of` 循环遍历数组,然后手动调用迭代器的 `next` 方法遍历数组,每次调用 `next` 方法会返回一个包含 `value` 和 `done` 属性的对象,`value` 是当前元素的值,`done` 表示是否遍历结束 [^1]。 ### Java 中使用迭代器遍历对象 在 Java 中,`Collection` 接口下有两类单例集合容器,`List` 类和 `Set` 类,下面以 `ArrayList` 为例说明使用迭代器遍历方法: ```java import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class IteratorExample { public static void main(String[] args) { // 1、创建集合并添加元素 Collection<String> coll = new ArrayList<>(); coll.add("aaa"); coll.add("bbb"); coll.add("ccc"); // 2、获取迭代器对象 // 迭代器好像一个箭头,默认指向集合的 0 索引处 Iterator<String> it = coll.iterator(); // 3、不断的获取集合中的每一个元素 while (it.hasNext()) { // 返回 boolean 类型,找到 true,没找到 false // 4、next 方法的两件事情,获取元素并且移动指针 String str = it.next(); System.out.println(str); } } } ``` 上述代码中,首先创建一个 `ArrayList` 并添加元素,然后通过 `iterator` 方法获取迭代器对象,使用 `hasNext` 方法判断是否还有元素,使用 `next` 方法获取当前元素并将指针后移 [^4]。 ### 注意事项 在 Java 中使用迭代器遍历时,迭代过程中不能使用集合的 `add` 或 `remove` 方法,否则会抛出 `ConcurrentModificationException` 异常,迭代器调用它自己的 `remove` 方法是合法的,因为它只能删除刚才已经迭代过的对象 [^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值