Firstly, got most of this off Java Sun website, just paired it down a bit for what I'm after. ... I really dont understand why ListIterator is specified as an Interface on Java.sun.com but ArrayIterator is a class, anyone care to explain? I assumed that both are classes, as this seems to make more sense to me, but if that is due to blatent ignorence I would appreciate the heads up. I'm generally just confused about the whole thing. I can't envision the dynamics and I'm having no luck attempting to put it together on my own, I've read up on loads of sites, but nothing seems to be giving me the understanding I need, please if anyone could spare the time I would be very grateful. thanks ------------------------------------------------------------------------------------- public interface Iterator { public boolean hasNext(); public Element next(); public void remove(); } ------------------------------------------------------------------------------------- public interface Iterable { public Iterator iterator(); } ------------------------------------------------------------------------------------- public class ListIterator implements Iterator{ private Iterator iterator; private Collection collection; public ListIterator(){ } public ListIterator(Collection c){ } public boolean hasNext(){ } public Element next(){ } public boolean hasPrevious(){ } public Element previous(){ } public int nextIndex(){ } public int previousIndex(){ } public void remove(){ } public void setList(Collection c){ } public void add(Element e){ } } ------------------------------------------------------------------------------------- public class ArrayIterator extends java.lang.Object implements Iterator { private Iterator iterator; private Collection collection; public ArrayIterator(){ } public ArrayIterator(Collection c){ } public Collection getArray(){ } public boolean hasNext(){ } public Element next(){ } public void remove(){ } public void setArray(Collection c){ } } ------------------------------------------------------------------------------------- public interface list extends Collection, Iterable { public int size(); public boolean isEmpty(); public Iterator iterator(); public boolean add(Element e); public boolean remove(Object o); public void clear(); public Element get(int index); public Element set(int i, Element e); public void add(int i, Element e); public Element remove(int i); public int indexOf(Object o); public ListIterator listIterator(); public ListIterator listIterator(int index); } ------------------------------------------------------------------------------------- public interface Collection extends Iterable{ public boolean add(Element e); //Ensures that this collection contains the specified element (optional operation). public void clear(); //Removes all of the elements from this collection (optional operation). public boolean isEmpty(); //Returns true if this collection contains no elements. public Iterator iterator(); //Returns an iterator over the elements in this collection. public boolean remove(Element e); //Removes a single instance of the specified element from this collection, if it is present (optional operation). public int size(); //Returns the number of elements in this collection. } ------------------------------------------------------------------------------------- public class Element { private String data; public Element(){ setData(); } public Element(String s){ this.data = s; } public void setData(){ data = "default"; } public void setData(String s){ data = s; } public String getData(){ return data; } }