Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote