Последний в последнем в Java - PullRequest
0 голосов
/ 13 сентября 2011

У меня есть 90 идентификаторов, которые мне нужны, как на изображении ниже.Я хочу, чтобы последний идентификатор был добавлен первым, и если в стек добавляются новые идентификаторы, я хочу вставить их в конец.Последний в последнем выходе.Что-то подобное уже существует?Я знаю, что могу использовать другие реализации коллекций, но мне интересно, есть ли стек, подобный этому, уже сделанный.

Ответы [ 6 ]

1 голос
/ 13 сентября 2011

Возможно, вы хотите иметь очередь FIFO (first-in-first-out).

Сначала взгляните на Javadoc из java.util.Queue .

Существует несколько реализаций:

1 голос
/ 13 сентября 2011

Очередь - это интерфейс с несколькими реализациями (включая такие вещи, как блокировка очередей, подходящих для многопоточных решений)

0 голосов
/ 13 сентября 2011

Вот код, с которого можно начать:

private static BlockingQueue<String> queue = new LinkedBlockingQueue<String>();

public static void main(String args[]) throws InterruptedException {
    // Start a thread that puts stuff on the queue
    new Thread(new Runnable() {
        public void run() {
            while (true) {
                try {
                    queue.put("Some message");
                    Thread.sleep(100);
                }
                catch (InterruptedException e) {
                    // Handle interruption
                }
            }
        }
    }).start();

    // Start a thread that takes stuff from the queue (LILO)
    new Thread(new Runnable() {
        public void run() {
            while (true) {
                try {
                    String message = queue.take(); // Waits if necessary for something to arrive
                    // Do something with message
                    Thread.sleep(100);
                }
                catch (InterruptedException e) {
                    // Handle interruption
                }
            }
        }
    }).start();

    Thread.currentThread().wait();
}
0 голосов
/ 13 сентября 2011

выглядит как обычная реализация очереди с элементами, добавленными в очередь в обратном порядке, чтобы начать с.

0 голосов
/ 13 сентября 2011

Вы можете использовать своего рода реализацию Queue<E>, предоставленную Java (см. queue реализация)

Другим возможным вариантом будет использование LinkedList<E> (см .: http://download.oracle.com/javase/1.4.2/docs/api/java/util/LinkedList.html)

Он предлагает все методы, которые вам нужны. Тем более, что ваше описание выглядит так, если вы не совсем уверены в желаемом поведении.

A Queue<E> предпочтительнее, чем LinkedList<E>, по крайней мере для больших коллекций без необходимости произвольного доступа.

0 голосов
/ 13 сентября 2011

Вы можете использовать Queue<E>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...