Stacks and Queues are some of the most basic data structures that are found in programming. While they have a simple function, they are among the most powerful tools that are employed almost everywhere from front-end app designs to backend streaming applications. There are many different variants of Stacks and Queues but know just for now that these Stacks and Queues are primarily different in that they have different eviction policies.
An eviction policy defines the order in which the elements are removed from the data structure after they have entered it. For instance, there is the Priority Queue in Java, which evicts elements based upon their natural ordering rather than the sequence in which they entered it. I digress, however. For now, let us consider two basic policies, FIFO and FILO.
There are two: first-in-first-out (FIFO) found in queues and first-in-last-out (FILO) found in stacks. Note that in many programming languages, stacks are considered to be a specific type of Queue. For the rest of the lesson, unless specified, a queue follows the FIFO policy. There is a generalized version of Stacks and Queues which is called a Deque as well (where we can push and pop elements from both ends, typically implemented as a doubly-linked list).
Before we dive into this topic, make sure to import these classes from the17.2 Queues
java.utilpackage. If you don’t you will get an unnecessary compiler error.