본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Java] How to implements Iterator.

by 돼지왕 왕돼지 2014. 1. 10.
반응형


 Java, How to implements Iterator.  

[Java] How to implements Iterator.



Aggregate 인터페이스


public interface Aggregate{

public abstract Iterator iterator();

}


Iterator 를 제공하려는 container class 는 Aggregate 를 implements 해야 함.

Aggregate Interface 를 implement 한 class 를 ConcreteAggregate class 라 부른다.




Iterator 인터페이스


public interface Iterator{

public abstract boolean hasNext();

public abstract Object enxt();

}


Iterator 를 구현한 class 를 ConcreteIterator 라 부른다.


아주 심플하게 이렇게 2개만 구현해주면 된다.




예제


소스 출처 : http://java.ihoney.pe.kr/3


public class Book {

    private String name;


    public Book(String name) {

        this.name = name;

    }


    public String getName() {

        return name;

    }

}


public class BookShelf implements Aggregate {


    private Book[] books;

    private int last = 0;


    public BookShelf( int maxsize ) {

        this.books = new Book[maxsize];

    }


    public Book getBookAt( int index ) {

        return books[index];

    }


    public void appendBook(Book book) {

        this.books[last] = book;

        last++;

    }


    public int getLength() {

        return last;

    }


    public Iterator iterator() {

        return new BookShelfIterator(this);

    }

}







public class BookShelfIterator implements Iterator {

   

    private BookShelf bookShelf;

    private int index;


    public BookShelfIterator ( BookShelf bookShelf ) {

        this.bookShelf = bookShelf;

        this.index = 0;

    }


    public boolean hasNext() {

        if ( index < bookShelf.getLength() ) {

            return true;

        } else {

            return false;

        }

    }


    public Object next() {

        Book book = bookShelf.getBookAt(index);

        index++;

        return book;

    }

}



반응형

댓글