Created
July 8, 2014 15:21
-
-
Save afaquejam/a2ae6349497be4e5ca3c to your computer and use it in GitHub Desktop.
Java: Implementing Iterable and Iterator to your Container Class
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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