import java.util.ArrayList;
import java.util.List;
/**
* {@link <a href=
* "https://[Log in to view URL]"
* target= "_blank"></a>}
*
* @author itammb ( Italia Massimiliano Buscati )
* @version JDK 1.15
*
*/
class Main {
public interface Iterator<T> {
boolean hasNext();
T next();
}
public static class BookConcreteIterator implements Iterator<Book> {
private List<Book> books;
private int position = 0;
public BookConcreteIterator(List<Book> books) {
this.books = books;
}
@Override
public boolean hasNext() {
return position < books.size();
}
@Override
public Book next() {
return books.get(position++);
}
}
public static class Book {
private String title;
public Book(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
}
interface IterableBookCollection {
Iterator<Book> createIterator();
}
public static class ConcreteCollectionLibrary implements IterableBookCollection {
private List<Book> books = new ArrayList<>();
public void addBook(Book book) {
books.add(book);
}
@Override
public Iterator<Book> createIterator() {
return new BookConcreteIterator(books);
}
}
public static void main(String args[]) {
// Unit test - uso del design pattern: iterator
ConcreteCollectionLibrary library = new ConcreteCollectionLibrary();
library.addBook(new Book("Design Patterns"));
library.addBook(new Book("Clean Code"));
library.addBook(new Book("Effective Java"));
Iterator<Book> iterator = library.createIterator();
System.out.println("Books in the library:");
while (iterator.hasNext()) {
System.out.println(iterator.next().getTitle());
}
}
}
To embed this project on your website, copy the following code and paste it into your website's HTML: