import java.util.AbstractCollection;
import java.util.Iterator;
public class PersonIterator extends AbstractCollection<Person> implements Iterable<Person>{
Person persons[];
int index = 0;
int count = 0;
public PersonIterator(int size) {
persons = new Person[size];
}
public boolean add(Person p) {
if(index >= persons.length) {
return false;
} else {
persons[index ++] = p;
count ++;
return true;
}
}
@Override
public Iterator<Person> iterator() {
return new Iterator<Person>() {
int index = 0;//Iterator的索引
@Override
public boolean hasNext() {
if(index < count) {
return true;
} else {
return false;
}
}
@Override
public Person next() {
return persons[index ++];
}
@Override
public void remove() {
}
};
}
@Override
public int size() {
return count;
}
}
class Person {
String name;
int age;
public Person(String name,int age) {
this.name = name;
this.age = age;
}
public String toString() {
return this.name + " " + this.age;
}
}
public class TestPersonIterator {
public static void main(String[] args) {
Person p1 = new Person("aa",11);
Person p2 = new Person("bb",11);
Person p3 = new Person("cc",11);
Person p4 = new Person("dd",11);
Person p5 = new Person("ee",11);
PersonIterator pi = new PersonIterator(5);
pi.add(p1);
pi.add(p2);
pi.add(p3);
pi.add(p4);
pi.add(p5);
for(Person p : pi.persons) {
System.out.print("[" + p + "] ");
}
}
}
//output
[aa 11] [bb 11] [cc 11] [dd 11] [ee 11]