首先我们分析下Iterator报错的问题,这个错误是说iterator找不到可以迭代的元素,主要原因就是我们在每次迭代里面多次使用了iterator.next(),这样就导致索引超出集合的长度抛出异常,那我们应该怎么使用呢? 很显然,我们在每次迭代的时候调用一次 iterator.next() 就不会出现这个问题。

定义一个实体类:

public class Person {
  private   String name;
  private  int age;
  private  String sex;

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}

错误的使用方法:

List<Person> personLists = getPersonDatas();
Iterator<String> it = personLists.iterator();
while (it.hasNext()) {
    String name = it.next().getName();// 第一次调用next()
    String age = it.next().getAge();// 第二次调用next()
    if (name.equals("张三") && age == 18 ) {
        it.remove();
    }
}

以下是Iterator的正确使用方法:

List<Person> personLists = getPersonDatas();
Iterator<String> it = personLists.iterator();
while (it.hasNext()) {
    Person p = it.next();// 只调用这一次next()
    if (p.getName().equals("张三") && p.getAge() == 18) {
        it.remove();
    }
}

在此记录一下,下次使用可不能犯错。

如果觉得我的文章对你有用,请随意赞赏