package collection.concrete;
import collection.AbstractList;
import collection.Iterator;
public class Queue<E> extends AbstractList<E> {
private LinkedList<E> myList;
public Queue() {
this.myList = new LinkedList<E>();
}
public void enQueue(E e) {
myList.addLast(e);
}
public E deQueue() {
if (0 == size())
return null;
return myList.removeFirst();
}
@Override
public void add(E e) {
enQueue(e);
}
@Override
public E get(int index) {
if (0 == size())
return null;
return myList.get(index);
}
public E element() {
if (0 == size())
return null;
return myList.getFirst();
}
@Override
public int size() {
return myList.size();
}
@Override
protected Iterator<E> iterator() {
return myList.iterator();
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((myList == null) ? 0 : myList.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Queue other = (Queue) obj;
if (myList == null) {
if (other.myList != null)
return false;
} else if (!myList.equals(other.myList))
return false;
return true;
}
}