In: Computer Science
Convert the Queue to Generic implementation:
public class MyQueueImpl implements MyQueue {
private int capacity;
private int front;
private int rear;
private int[] arr;
public MyQueueImpl(int capacity){
this.capacity = capacity;
this.front = 0;
this.rear = -1;
this.arr = new
int[this.capacity];
}
@Override
public boolean enQueue(int v) {
if(this.rear ==
this.capacity - 1) {
//Perform shift
int tempSize = this.size();
for(int i=0; i < tempSize; i++) {
arr[i] = arr[front];
front++;
}
front = 0;
rear = tempSize - 1;
}
this.rear
++;
arr[rear] =
v;
return
true;
}
@Override
public int deQueue() {
return arr[front++];
}
public String toString() {
String content = "Queue :: ";
for(int i=front; i<= rear; i++)
{
content += "\n"
+ arr[i];
}
return content;
}
@Override
public boolean isFull() {
return (this.size() ==
this.capacity);
}
@Override
public int size() {
return rear - front + 1;
}
@Override
public boolean isEmpty() {
// TODO Auto-generated method
stub
return (this.size() == 0);
}
@Override
public int peek() {
// TODO Auto-generated method
stub
return this.arr[this.front];
}
}
Short Summary:
**************Please upvote the answer and appreciate our time.************
Source Code:
MyQueue.java File:
public interface MyQueue<E> {
public boolean enQueue(E v);
public E deQueue();
public boolean isFull();
public int size();
public boolean isEmpty();
public E peek();
}
MyQueueImpl.java File:
import java.util.ArrayList;
public class MyQueueImpl<E> implements MyQueue<E>
{
private int capacity;
private int front;
private int rear;
private ArrayList<E> arr;
public MyQueueImpl(int capacity) {
this.capacity = capacity;
this.front = 0;
this.rear = -1;
this.arr = new
ArrayList<E>();
}
@Override
public boolean enQueue(E v) {
if (this.rear == this.capacity - 1)
{
// Perform
shift
int tempSize =
this.size();
for (int i = 0;
i < tempSize; i++) {
arr.add(i, arr.get(front));
front++;
}
front = 0;
rear = tempSize
- 1;
}
this.rear++;
arr.add(rear, v);
return true;
}
@Override
public E deQueue() {
return arr.get(front++);
}
public String toString() {
String content = "Queue :: ";
for (int i = front; i <=
rear; i++) {
content += "\n"
+ arr.get(i);
}
return content;
}
@Override
public boolean isFull() {
return (this.size() ==
this.capacity);
}
@Override
public int size() {
return rear - front + 1;
}
@Override
public boolean isEmpty() {
// TODO Auto-generated method
stub
return (this.size() == 0);
}
@Override
public E peek() {
// TODO Auto-generated method
stub
return
this.arr.get(this.front);
}
}
GenericQueueTest.java
File:
public class GenericQueueTest {
public static void main(String[] args) {
// IntegerQueue
MyQueueImpl<Integer> intQueue
= new MyQueueImpl<Integer>(10);
intQueue.enQueue(10);
intQueue.enQueue(20);
intQueue.enQueue(30);
intQueue.enQueue(40);
intQueue.enQueue(50);
System.out.println("Integer Queue:
\n" + intQueue.toString());
System.out.println("Integer Queue
Peek: " + intQueue.peek());
while(!intQueue.isEmpty()) {
System.out.println("Integer Dequeued: " +
intQueue.deQueue());
}
// IntegerQueue
System.out.print("\n\n\n");
MyQueueImpl<String>
stringQueue = new MyQueueImpl<String>(10);
stringQueue.enQueue("Java");
stringQueue.enQueue("Generics");
stringQueue.enQueue("Programming");
stringQueue.enQueue("is");
stringQueue.enQueue("Fun");
System.out.println("String Queue:
\n" + stringQueue.toString());
System.out.println("String Queue
Peek: " + stringQueue.peek());
while(!stringQueue.isEmpty())
{
System.out.println("String Dequeued: " +
stringQueue.deQueue());
}
}
}
Sample Run: