Что ж, структура LIFO (Last In First Out) известна как стек, то есть то, что вам нужно для основной части вашего требования
Структура FIFO (First In First Out) известна как Очередь, которая является тем, что вам нужно для возможности вытаскивать самые старые Предметы со спины.
Их комбинация называется Deque. Где у вас есть возможность толкать или хлопать с любого конца.
Я не уверен, есть ли в Java встроенная структура данных Deque, но если она есть (или вы можете найти реализацию в google), вы можете просто поместить некоторую логику обертывания, чтобы убедиться, что если вы выдвинетесь вперед , и deque.Count> 3, а затем выскочить сзади.