设计模式02迭代器(java)

时间:2022-07-15 08:39:02

先贴代码,有空来写内容。

1.定义集合


  import java.util.List;
  import java.util.ArrayList;

 //coollection是我自己定义的一个集合,因为要写迭代器,得有个迭代的对象啊。
class coollection<Object>{
//coollection的数据存储在一个ArrayList里
private List<Object> data = new ArrayList<Object>();
//index用于记录当前将迭代元素的下标
private int index = 0;
//给集合添加元素
public void add(Object o){
data.add(o);
}
//获取index
public int getCurrent(){
return index;
}
//获取集合规模
public int size(){
return data.size();
}
//获取一个元素并将索引指向下一个元素
public Object get(){
return data.get(index++);
}
//删除已经被迭代的最后一个元素
public void remove(){
if(index != 0)
data.remove(index-1);
}
//获取coollection的迭代器
public iterator getiterator(){
index = 0;
return new coollectionItrator(this);
}
}

2.写迭代器

 //迭代器接口,所有迭代器都要实现这个接口的所有功能
interface iterator{
public boolean hasNext();
public Object next();
public void remove();
}
//coollection集合的专属迭代器,实现了iterator
class coollectionItrator implements iterator{
//定义该迭代器要操作的集合 dataSrc
coollection<Object> dataSrc;
//初始化集合
public coollectionItrator(coollection c){
dataSrc = c;
}
//重写hasNext()
@Override
public boolean hasNext(){
return dataSrc.size() > dataSrc.getCurrent();
}
//重写next()
@Override
public Object next(){
return dataSrc.get();
}
//重写remove()
@Override
public void remove(){
dataSrc.remove();
}
}

3.测试迭代器

 // 测试迭代器
public class iteratorDemo{
public static void main(String[] args){
//new 一个集合,将三个实例放进集合里
coollection<Student> stu = new coollection<Student>();
stu.add(new Student("singleDog","man","18"));
stu.add(new Student("singleDoge","feman","19"));
stu.add(new Student("0.0","feman","20")); //获取集合stu的迭代器
iterator it = stu.getiterator();
//遍历集合并输出元素
while(it.hasNext()){
System.out.println(it.next());
}
// 测试迭代器的remove功能
it.remove();
System.out.println("删除后:");
it = stu.getiterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}