Просмотр и опрос приоритетной очереди Java

Я пытаюсь создать табличную модель с данными в очереди приоритетов. Проблема в том, что, когда я пишу «заглянуть», очевидно, что он всегда получает начало очереди, но когда я пишу «опрос», таблица вообще не показывает никаких данных, и я не понимаю, почему, может быть, у кого-то есть идея?

структура данных:

/**
* date 
*/
    private Queue<Entry<Flight,Double>> data=new PriorityQueue<Entry<Flight,Double>>();

получить значение в методе:

  @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        if(!data.isEmpty()){
             Entry<Flight,Double> e=data.poll();

             switch(columnIndex)
             {
                case 0:
                    return e.getKey().getFlightNumber();

                case 1:
                    return e.getKey().getFlightDateAndTimeSource();

                case 2:
                    return e.getKey().getFlightDateAndTimeDestination();
                case 3:
                    return e.getKey().getSource();
                case 4:
                    return e.getKey().getDestination();
                case 5:
                    return e.getKey().getFlightCost();
                case 6:
                    return e.getKey().getAirplane();
                case 7:
                    return e.getValue();

                 default: return -1;
             }

        }
        else
            return " ";
    }

Проверил отладкой, данные не пустые. также он работает с просмотром.

Заранее спасибо!


person user3813409    schedule 31.07.2014    source источник
comment
так что e устанавливается на null?   -  person forgivenson    schedule 31.07.2014
comment
Вы понимаете, что ваша очередь будет очищаться с каждым рендерингом? С какой стати вам вообще использовать очередь в качестве модели данных?   -  person Ordous    schedule 31.07.2014
comment
Я не выбирал тип, это заданный метод этой домашней работы, который возвращает приоритетную очередь.   -  person user3813409    schedule 31.07.2014


Ответы (2)


Проблема с Queue в этом случае заключается в том, что он не предназначен для прохождения более одного раза. Я предлагаю перейти на отсортированный List. Я думаю, что происходит то, что он рисуется один раз, что очищает Queue, и любое последующее обновление, перерисовка или перерисовка видят пустой Queue

person John B    schedule 31.07.2014

Не обсуждая смысл этой конструкции, я бы предположил, что это может быть связано с тем, как вы используете PriorityQueue. Внутри getValueAt вы можете читать из очереди, используя peek, но poll пытается изменить ее, что, по-видимому, и является проблемой. getValueAt учится в том же классе, что и ваш private Queue<Entry<Flight,Double>> data?

В зависимости от того, как вы получаете доступ/используете очередь, это может решить вашу проблему, объявив ее как static.

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

person Ben Win    schedule 31.07.2014
comment
Да, это все в одном классе. класс расширяет AbstractTableModel, а все остальные методы являются стандартным переопределением. Я попытался изменить данные в список и добавить все элементы очереди, и это работает, но я не нашел решения с помощью очереди. - person user3813409; 31.07.2014