Think for a moment. We have two fundamental disciplines of storage. Adjacent and fragmented.
adjoining.
The stack is limited in order. Last in First Out. Nested function call contexts require this.
We can easily invert this pattern to define a Queue . First arrived, first served.
We can add queue binding to make Circular Queue . I / O processing requires this.
We can combine both restrictions in Dequeue .
. .
. , . .
: . "", - .
:
- ..
? ?
"", . (heapish array-ish)
: . , : LinkedBag, TreeBag, ArrayBag, HashBag. , .
: . . : LinkedSet, TreeSet, ArraySet, HashSet.
: . . : LinkedList, TreeList, ArrayList, HashList.
: . . LinkedMap, TreeMap, ArrayMap, HashMap.