Сохранение ордера в очереди приоритетов [дубликат]

Я не думаю, что вы можете - для получения аудио или видео есть W3C draft API , но на какой-либо из основных мобильных ОС еще нет реализации.

Второй вариант Единственный вариант - пойти с предложением Денниса использовать PhoneGap. Это означает, что вам нужно создать родное приложение и добавить его в магазин мобильных приложений / на рынке.

10
задан Raedwald 18 April 2016 в 07:26
поделиться

4 ответа

Вам нужно поочередно опробовать элементы из PriorityQueue. toString этого не делает.

Итак, вместо вашего System.out.println(queue); сделайте это:

while(!queue.isEmpty()) {
   System.out.println(queue.poll());
}

Причина в том, что PriorityQueue никогда полностью не сортируется внутри, посмотрите, как куча работает для более подробной информации. Вывод элементов из него фиксирует кучу во время вызовов, поэтому он должен выводить элементы в отсортированном порядке.

20
ответ дан Thomas Jungblut 15 August 2018 в 20:45
поделиться

Вы хотите, чтобы более низкая частота повышалась так:

  public int compare(TreeNodeHuffman p1, TreeNodeHuffman p2) {
          if (p1.frequency < p2.frequency) return 1;
          if (p1.frequency > p2.frequency) return -1;
          return 0;
      }    
   }

Если вы хотите протестировать ее, отправьте ее в один пул с потоком и посмотрите порядок обрабатываемых заданий вместо строки или итератора , как говорит doc в http://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html#iterator%28%29 :

Возвращает итератор по элементам в этой очереди. Итератор не возвращает элементы в каком-либо конкретном порядке.

Можно увидеть http://docs.oracle.com/javase/7/docs/api/java/util/ concurrent / Executors.html # newSingleThreadExecutor% 28% 29 для быстрого однопоточного пула, чтобы проверить это.

1
ответ дан tgkprog 15 August 2018 в 20:45
поделиться

System.out.println(queue) печатает очередь без сортировки. Если вы хотите напечатать реальный порядок очереди, следуйте приведенному ниже коду, который использует опрос, чтобы получить элементы из очереди сверху вниз:

TreeNodeHuffman tn = null;
    do{
        tn = queue.poll();
        if(tn!=null){
            System.out.print(tn.key+",");
        }
    }while(tn != null);

, и вы увидите этот результат как ожидалось:

z, q, x, j, k, v, b, p, y, g, f, w, m, u, c, l, d, r, h, s, a, i, o, a, t, e,

4
ответ дан user 15 August 2018 в 20:45
поделиться
0
ответ дан Saurav Sahu 5 September 2018 в 20:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: