apublic class app
{
public static void main(String[] args)
{
List<Human> lst=new List<Human>();
lst.add(new Human("Jerry"));
lst.add(new Human("Mary"));
lst.add(new Human("Jon"));
lst.add(new Human("Bluz"));
lst.add(new Human("Jon"));
java.util.Iterator iter= lst.getIterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
}
}
class Human
{
String name="";
public Human(String name)
{
this.name=name;
}
public String toString()
{
return super.toString()+"@name="+this.name;
}
}
class List<T> implements java.util.Iterator
{
private Object[] list=null;
private int index=-1;
private int capacity=2;
private int size=0;
public List()
{
init();
}
public List(int capacity)
{
this.capacity=capacity;
init();
}
private void init()
{
list=new Object[capacity];
size=capacity;
}
private void resize()
{
int oldsize=size;
size=size+capacity;
Object[] lst=new Object[size];
for(int i=0;i<oldsize;i++)
{
lst[i]=list[i];
}
list=lst;
//System.out.println("===resize===");
}
public void add(T obj)
{
//System.out.println(index);
//System.out.println(size);
index++;
if(index>=size)
resize();
list[index]=obj;
}
public boolean hasNext()
{
if (cursor == -1)
return list.length > 0;
return cursor < list.length;
}
private int cursor;
public java.util.Iterator getIterator()
{
cursor = -1;
return (java.util.Iterator)this;
}
public Object next()
{
System.out.println(cursor);
if(cursor==-1) cursor=0;
Object nxt=list[cursor];
cursor++;
return nxt;
}
public void remove(){}
}
четверг, 10 марта 2011 г.
Простая реализация итератора
Одним из паттернов проектирования является итератор - организация определенного порядка извлечения элементов из списка. Здесь показана реализация программного интерфейса, из спецификации java:
Подписаться на:
Комментарии к сообщению (Atom)
Вы же тут совсем не реализовываете паттерн Iterator - Вы просто используете java.util.Iterator. Причем делаете это в классе контейнера.
ОтветитьУдалитьЭтот комментарий был удален автором.
ОтветитьУдалить