Friday, 29 June 2012

Queue implementation in Java

Lets' imagine, there is no Queue functionality (First In - First Out) present in the Java library, and if you were asked to implement Queue functionality, how would you do that?

I am here with java code for the Queue functionality implementation.

1. Queue.java

package ora.queue;

/**
 * @author sateesh
 *
 */
public interface Queue {

    /**
     * @param obj
     */
    void enqueue(Object obj);
   
    /**
     * @return
     */
    Object dequeue();
   
    /**
     * @return
     */
    int size();
}


2. QueueImpl.java


package ora.queue;

import ora.stackex.*;

public class QueueImpl implements Queue {
    private Stack input;
    private Stack output;
    public QueueImpl() {
        input = new StackImpl();
        output = new StackImpl();
    }
   
    @Override
    public Object dequeue() {
        if (input.size() > 0) {
            int j = input.size();
            for (int i=0; i<j; i++) {
                output.push(input.pop());
            }
        }
       
        if (output.size() == 0)
            return null;
       
        return output.pop();
    }

    @Override
    public void enqueue(Object obj) {
       
        if (output.size() == 0) {
            input.push(obj);
        } else {
            int j = output.size();
            for (int i=0; i<j; i++)
                input.push(output.pop());
           
            input.push(obj);
        }
    }

    @Override
    public int size() {
        return input.size() == 0 ? output.size() : input.size();
    }

}

No comments:

Post a Comment