Вы говорите о стеке или очереди, в зависимости от того, хотите ли вы, чтобы они были FIFO или LIFO , в сочетании со вставкой элементов в числовом порядке в первомместо - это означает, что вы сортируете элементы при вставке, чтобы они всегда были в правильном числовом порядке.
При сортировке элементов по числовому порядку при сортировке гарантируется, что они будут в том порядке, который вы ожидаете, когдаВы удаляете их.
Вы можете использовать Java LinkedList для того, чтобы вставлять элементы туда, где вы хотите, чтобы они были в списке, а также удалять их из формы «назад» или «спереди» списка, если необходимо.
Наконец, чтобы гарантировать, что вы не можете удалить элемент, если он не является следующим в последовательности, вам нужно просто проверить значение перед его удалением из списка, чтобы убедиться, что он был последовательноследующий после последнего удаленного элемента.Если он не удовлетворяет этим критериям, либо возвращает «false», либо какое-либо другое значение, указывающее, что в данный момент из списка ничего нельзя удалить.
Также проверьте этот вопрос: СозданиеОчередь блокировки в .NET? - это не Java, но она очень похожа и может дать некоторое представление.