public class Test {
public static void main(String[] args) {
Peoples peoples = new Peoples();
peoples.add(new People("阿椰", 25));
peoples.add(new People("阿明", 22));
peoples.add(new People("阿发", 23));
MyIterator iterator = peoples.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
class People {
private String name;
private Integer age;
People(String name, Integer age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "People{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
// 抽象聚合角色
interface AbstractPeoples {
void add(People people);
void remove(People people);
MyIterator iterator();
}
// 具体聚合角色
class Peoples implements AbstractPeoples {
private final List<People> peopleList = new ArrayList<>();
@Override
public void add(People people) {
peopleList.add(people);
}
@Override
public void remove(People people) {
peopleList.remove(people);
}
@Override
public MyIterator iterator() {
return new PeopleIterator(peopleList);
}
}
// 抽象迭代器角色
interface MyIterator {
boolean hasNext();
People next();
}
// 具体迭代器角色
class PeopleIterator implements MyIterator {
// 指针
private int point = 0;
private List<People> peopleList;
PeopleIterator(List<People> peopleList) {
this.peopleList = peopleList;
}
@Override
public boolean hasNext() {
return peopleList.size() > point;
}
@Override
public People next() {
return peopleList.get(point++);
}
}


public class Test {
public static void main(String[] args) {
PeopleList peopleList = new PeopleList();
peopleList.add(new People("阿椰", 25));
peopleList.add(new People("阿明", 22));
peopleList.add(new People("阿发", 23));
Iterator iterator = peopleList.jdkIterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
// 具体聚合角色
class PeopleList implements AbstractPeoples {
private final List<People> peopleList = new ArrayList<>();
@Override
public void add(People people) {
peopleList.add(people);
}
@Override
public void remove(People people) {
peopleList.remove(people);
}
@Override
public MyIterator iterator() {
return new PeopleIterator(peopleList);
}
public Iterator jdkIterator() {
return new PeopleItr(peopleList);
}
private class PeopleItr implements Iterator<People> {
// 指针
private int point = 0;
private List<People> peopleList;
PeopleItr(List<People> peopleList) {
this.peopleList = peopleList;
}
@Override
public boolean hasNext() {
return peopleList.size() > point;
}
@Override
public People next() {
return peopleList.get(point++);
}
}
}