This is my Queue implementation in Java. Would appreciate a review of the code.
import java.util.Iterator;
public class Queue<T>implements Iterable<T> {
private Node first, last;
private int size;
@Override
public QueueIterator iterator() {
return new QueueIterator();
}
private class QueueIterator implements Iterator<T>{
private Node current = first;
public boolean hasNext(){
return current != null;
}
public T next(){
T item = current.data;
current = current.next;
return item;
}
}
private class Node{
Node(T data){
this.data = data;
this.next = null;
}
T data;
Node next;
}
public Queue(){
first = last = null;
size = 0;
}
public void enqueue(T item){
Node p = new Node(item);
if(first == null){
first = last = p;
size++;
return;
}
last.next = p;
last = p;
size++;
}
public T dequeue(){
Node p = first;
try{
first = first.next;
size--;
}catch(Exception e){
System.out.println("Dequeing an empty queue :" + e);
}
return p.data;
}
public boolean isEmpty(){
return last == null;
}
}