I am a newbie to Java. I will be glad to hear your opinion with regards to this LinkedList implementation. The Iterators are self implemented by my decision:
public interface Iterator {
public boolean hasNext();
public Object Next();
}
public class LinkedList {
private Node mBase;
private class ListIterator implements Iterator {
private Node iterator;
ListIterator(){
iterator = mBase;
}
@Override
public boolean hasNext(){
return (iterator.getNext() != null);
}
@Override
public Object Next() {
Object userData = iterator.getData();
iterator = iterator.getNext();
return userData;
}
}
static private class Node {
private Node next;
private Object data;
Node(Object data, Node next) {
this.data = data;
this.next = next;
}
Object getData(){
return data;
}
Node getNext(){
return next;
}
boolean isNext(){
if (next == null) return (false);
return (true);
}
}
public void push(Object data){
Node newNode = new Node(data, mBase);
mBase = newNode;
}
public Object pop(){
Node baseNode = mBase;
Object userdata = null;
if (isEmpty())
{
return (null);
}
mBase = mBase.getNext();
baseNode.next = null;
userdata = baseNode.getData();
baseNode = null;
return (userdata);
}
public long getSize(){
Node current = mBase;
int counter = 0;
if (isEmpty()){
return (0);
}
while (current.isNext()){
current = current.getNext();
++counter;
}
++counter;
return (counter);
};
public ListIterator getItr(){
return new ListIterator();
};
public boolean isEmpty(){
return (mBase == null);
}
}
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
LinkedList list = new LinkedList();
System.out.print("isEmpty. Print true:");
System.out.println(list.isEmpty());
list.push(1);
list.push(2);
list.push(3);
list.push("Hello");
list.push("World");
System.out.print("isEmpty. Print false:");
System.out.println(list.isEmpty());
System.out.print("getSize(). Should be 5: ");
System.out.println(list.getSize());
Iterator itr = list.getItr();
System.out.print("itr.hasNext() (should be true)");
System.out.println(itr.hasNext());
while (itr.hasNext()) {
System.out.print("itr.getNext()");
System.out.println(itr.Next());
}
System.out.print("itr.getNext()");
System.out.println(itr.Next());
while(!list.isEmpty()){
System.out.print("itr.list.pop()");
System.out.println(list.pop());
}
System.out.print("getSize(). Should be 0: ");
System.out.println(list.getSize());
}
}