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. Причем делаете это в классе контейнера.
ОтветитьУдалитьЭтот комментарий был удален автором.
ОтветитьУдалить