Java - Generic Classes public interface Queue { public int size(); // current qu
ID: 3685875 • Letter: J
Question
Java - Generic Classes
public interface Queue {
public int size(); // current queue size
public boolean isEmpty(); // true if queue is empty
public void enqueue(Object element); // add element at end of queue
public Object dequeue(); // return and remove first element.
public Object first(); // return (without removing) first element
public Object last(); // return (without removing) last element
public String toString(); // return a string representation of the queue content
public Iterator iterator(); // element iterator
}
Tasks:
Provide a similar generic queue interface named Queue<T>. Provide a linked generic queue named LinkedQueue<T> that implements the interface Queue<T> using the head-and-tail approach. Write a JUnit test program QueueTest for your generic queue implementation. Make sure that you are using at least two parameter types (e.g. Integer and String) in your tests.
Explanation / Answer
QueueTest:
import static javafx.scene.input.KeyCode.T;
//import junit.framework.TestCase;
public class QueueTest<T> extends LinkedQueue<T> {
private LinkedQueue que; // calculator object for tests
/** initialize: repeated before each test */
protected void setUp() {
que = new LinkedQueue();
}
}
Linked Queue:
import java.util.Iterator;
import java.util.NoSuchElementException;
public class LinkedQueue<T> implements Queue<T> {
private Node<T> tail = null;
private int size = 0;
private Node<T> head = null;
public void enqueue(Object element) {
if (head == null)
head = new Node((T) element);
else {
Node node = head;
while (node.next != null)
// Find last node
node = node.next;
node.next = new Node((T) element); // Attach new node
}
size++;
}
public int size() {
return size;
}
public boolean isEmpty() throws NullPointerException {
return head == null;
}
public T dequeue() {
if (head == null)
// already empty
throw new NoSuchElementException(" empty queue cannot be dequeue");
else {
Node delete = head;
head.next = delete.next; // Bypass deleted node
size--;
return (T) delete;
}
}
public T first() {
if (head == null)
return null;
else
return head.value;
}
public T last() {
if (isEmpty()) {
throw new NullPointerException("it is empty queue so no last element");
}else
return tail.value;
}
/*public T last() {
if (tail == null)
return null;
else
return tail .value;
}*/
public Iterator iterator() {
return new ListIterator();
}
private class Node<T> { // Private inner Node class
T value;
Node next = null;
Node(T v) {
value = v;
}
}
private class ListIterator implements Iterator<T> { // Inner iterator class
private Node node = head; // First node is head
public T next() {
T val = (T) node.value;
node = node.next;
return val;
}
public boolean hasNext() {
return node != null;
}
public void remove() {
throw new RuntimeException("remove() is not implemented");
}
}
}
Queue:
import java.util.Iterator;
public interface Queue<T> {
public int size(); // current queue size
public boolean isEmpty(); // true if queue is empty
public void enqueue(Object element); // add element at end of queue
public Object dequeue(); // return and remove first element.
public Object first(); // return (without removing) first element
public Object last(); // return (without removing) last element
public String toString(); // return a string representation of the queue content
public Iterator iterator(); // element iterator
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.