Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class ArrayQueue<T> implements QueueADT<T>, Serializable {
- public static final int DEFAULT_CAPACITY = 100;
- private int front;
- private int count;
- private T[] queue;
- public ArrayQueue() {
- this(DEFAULT_CAPACITY);
- }
- public ArrayQueue(int initialCapacity) {
- queue = (T[])new Object[initialCapacity];
- front = 0;
- count = 0;
- }
- public void enqueue(T element) throws IllegalArgumentException {
- if (element == null) {
- throw new IllegalArgumentException("Null values are npt accepted");
- }
- else if (count >= queue.length) {
- expandCapacity();
- this.enqueue(element);
- }
- else {
- queue[(front + count) % queue.length] = element;
- count++;
- }
- }
- public T dequeue() throws IllegalStateException {
- if (this.isEmpty()) {
- throw new IllegalStateException("Element cannot be dequeued! The queue is empty!");
- }
- T element = queue[front];
- queue[front++] = null;
- count--;
- return element;
- }
- public T first() throws IllegalStateException{
- if (this.isEmpty()) {
- throw new IllegalStateException("There is no first element! The queue is empty!");
- }
- return queue[front];
- }
- public int indexOf(T element) {
- int dequeues = 0;
- for (int i = front; i < this.queue.length; i++) {
- if (queue[i] != null && queue[i].equals(element)) {
- return dequeues;
- }
- dequeues++;
- }
- for (int i = 0; i < front; i++) {
- if (queue[i] != null && queue[i].equals(element)) {
- return dequeues;
- }
- dequeues++;
- }
- return -1;
- }
- public boolean isEmpty() {
- if (this.size() == 0) return true;
- return false;
- }
- public int size() {
- return count;
- }
- public String toString() {
- String result = "";
- for (int i = front; i < queue.length; i++) {
- if (i != front && queue[i] != null) {
- result += ", " + queue[i];
- } else if (queue[i] != null){
- result += queue[i];
- }
- }
- return String.format("{%s}", result);
- }
- public void expandCapacity() {
- T[] newQueue = (T[])(new Object[queue.length * 2]);
- for (int i = 0; i < queue.length; i++) {
- newQueue[i] = queue[i];
- }
- this.queue = newQueue;
- }
- public T[] getQueue() {
- return this.queue;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement