public class Client {
public static void main(String[] args) {
Aggregate aggregate = new ConcreteAggregate();
aggregate.add("《操作系统》");
aggregate.add("《程序设计》");
aggregate.add("《设计模式》");
aggregate.add("《数据结构》");
aggregate.add("《计算机组成原理》");
Iterator iterator = aggregate.getIterator();
while (iterator.hasNext()) {
System.out.println(iterator.next().toString() + "\t");
}
System.out.println("\nFirst:" + iterator.first().toString());
System.out.println("\nFirst:" + iterator.currentItem().toString());
}
}
public interface Aggregate {
void add(Object object);
void remove(Object object);
Iterator getIterator();
}
public interface Iterator {
Object first();
Object next();
boolean hasNext();
Object currentItem();
}
import java.util.ArrayList;
import java.util.List;
public class ConcreteAggregate implements Aggregate {
private List<Object> list = new ArrayList<>();
@Override
public void add(Object object) {
list.add(object);
}
@Override
public void remove(Object object) {
list.remove(object);
}
@Override
public Iterator getIterator() {
return (new ConcreteIterator(list));
}
}
import java.util.List;
public class ConcreteIterator implements Iterator {
private List<Object> list;
private int index = -1;
public ConcreteIterator(List<Object> list) {
this.list = list;
}
@Override
public Object first() {
index = 0;
return list.get(index);
}
@Override
public Object next() {
Object object = null;
if (this.hasNext()) {
object = list.get(++index);
}
return object;
}
@Override
public boolean hasNext() {
return index < list.size() - 1;
}
@Override
public Object currentItem() {
return list.get(index);
}
}
import java.util.Collection;
import java.util.HashSet;
public class test{
public static void main(String[] args) {
Collection<String> list = new HashSet<>();
list.add("《操作系统》");
list.add("《程序设计》");
list.add("《设计模式》");
list.add("《数据结构》");
list.add("《计算机组成原理》");
for (String s : list) {
System.out.println(s);
}
}
}