We know we have java.util.Stack as a data structure in Java. It has standard functions like pop(), push(), peek(). But ever wondered what is analog for Queue in Java?
If you search for Queue class in java then you will wind such an interface java.util package.
public interface Queue<E> extends Collection<E>
And if you check classes implementing this interface you will find LinkedList in it. Yes LinkedList in java can be used for FIFO operations. Actually LinkedList implements Deque which inturn implements Queue. If you see functions in Queue interface they are as follows -
Lets understand this better with a code -
If you search for Queue class in java then you will wind such an interface java.util package.
public interface Queue<E> extends Collection<E>
And if you check classes implementing this interface you will find LinkedList in it. Yes LinkedList in java can be used for FIFO operations. Actually LinkedList implements Deque which inturn implements Queue. If you see functions in Queue interface they are as follows -
- element(): This method retrieves the head of the queue.
- offer(E o): This inserts the specified element into the queue.
- peek(): This method retrieves the head of this queue, returning null if this queue is empty.
- poll(): This method retrieves and removes the head of this queue, or return null if this queue is empty.
- remove(): This method retrieves and removes the head of this queue.
Lets understand this better with a code -
Code -
import java.util.LinkedList;
import java.util.Queue;
public class FIFOTest {
public static void main(String args[]){
Queue<String> myQueue = new LinkedList<String>();
myQueue.add("US");
myQueue.add("Russia");
myQueue.add("India");
myQueue.offer("Canada");
for(String element : myQueue){
System.out.println("Element : " + element);
}
System.out.println("Queue : " + myQueue);
System.out.println(myQueue.peek());
System.out.println("After peek : " + myQueue);
System.out.println(myQueue.poll());
System.out.println("After poll : " + myQueue);
System.out.println(myQueue.remove());
System.out.println("After remove : " + myQueue);
}
}
Output -
Element : US
Element : Russia
Element : India
Element : Canada
Queue : [US, Russia, India, Canada]
US
After peek : [US, Russia, India, Canada]
US
After poll : [Russia, India, Canada]
Russia
After remove : [India, Canada]
Element : Russia
Element : India
Element : Canada
Queue : [US, Russia, India, Canada]
US
After peek : [US, Russia, India, Canada]
US
After poll : [Russia, India, Canada]
Russia
After remove : [India, Canada]
Note : From usability point of view add() and offer() do the same thing. Same goes for poll() and remove().