Инструменты пользователя

Инструменты сайта


pattern_iterator

Назад

Паттерн Итератор предоставляет механизм последовательного перебора элементов коллекции без раскрытия ее внутреннего представления.

Кроме того, перебор элементов выполняется объектом итератора, а не самой коллекцией. Это упрощает интерфейс и реализацию коллекции, а также способствует более логичному распределению обязанностей.

MyIterator
public class MyIterator implements Iterator
{
    Object []items;
    int pos = 0;
 
    public MyIterator(Object[] items)
    {
       this.items = items;
    }
    public boolean hasNext()
    {
        if(pos >= items.length || items[pos] == null)
        {
            return false;
        }
        else
        {
            return true;
        }
    }
 
    public Object next()
    {
        Object item = items[pos]; 
        pos++;
        return item;
    }
 
    public void remove()
    {
        if(pos <= 0)
        {
            throw  new IllegalStateException("pos <= 0");
        }
        if(items[pos-1] !=null)
        {
            for(int i= pos - 1; i<(items.length-1);i++)
            {
                items[i] = items[i+1];
            }
            items[items.length-1] = null;
        }
    }
}
Main
public class Main
{
    public static void main(String[] args)
    {
        String [] list = new String[10];
        for(int i=0;i<10;i++)
        {
            list[i] = "item-"+i;
        }
 
        MyIterator myIter = new MyIterator(list);
        Iterator it = myIter;
 
        while(myIter.hasNext())
        {
            System.out.println(myIter.next());
        }
 
        while(it.hasNext())
        {
            System.out.println(myIter.next());
        }
 
    }
}