Skip to content

Instantly share code, notes, and snippets.

@afaquejam
Created July 8, 2014 15:21
Show Gist options
  • Save afaquejam/a2ae6349497be4e5ca3c to your computer and use it in GitHub Desktop.
Save afaquejam/a2ae6349497be4e5ca3c to your computer and use it in GitHub Desktop.
Java: Implementing Iterable and Iterator to your Container Class
import java.util.Iterator;
public class Iterators<Items> implements Iterable<Items>{
private class Node {
Items item;
Node next;
}
private Node first = null;
public void addItem(Items item) {
Node newNode = new Node();
newNode.item = item;
newNode.next = null;
if(first == null) {
first = newNode;
} else {
Node current = first;
while(current.next != null)
current = current.next;
current.next = newNode;
}
}
public Iterator<Items> iterator() {
return new nodeIterator();
}
private class nodeIterator implements Iterator<Items> {
private Node reference = first;
public boolean hasNext() {
return reference != null;
}
public Items next () {
Items result = reference.item;
reference = reference.next;
return result;
}
public void remove() {
}
}
public static void main(String[] arguments) {
Iterators<Integer> integers = new Iterators<Integer>();
integers.addItem(3);
integers.addItem(4);
integers.addItem(6);
integers.addItem(7);
// Thanks to Iterable and iterator.
for(Integer storedNumber : integers)
System.out.println(storedNumber);
Iterators<String> strings = new Iterators<String>();
strings.addItem("Hello");
strings.addItem("world");
strings.addItem("Hola");
// Another way to use iterators.
Iterator stringIterator = strings.iterator();
while(stringIterator.hasNext())
System.out.println(stringIterator.next());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment