Chciałbym otrzymać próbkę kodu, która zawiera rosnącą kolejność elementów w kolejce priorytetowej.Kolejka priorytetowa Scala uporządkowana, która ma zawsze najniższy numer jako nagłówek, kolejność rosnąca.
Chciałbym przechowywać Tuple2(Int, String)
wewnątrz kolejki priorytetów, tak aby została zamówiona przez pierwszy element krotki w porządku rosnącym. Jeśli kolejka priorytetowa nazywa się pq
i ja dzwonię pod numer pq.head
Chciałbym uzyskać krotkę z najniższym numerem, to samo z wywoływaniem pq.dequeue
.
scala> val pq = scala.collection.mutable.PriorityQueue[(Int, String)]()
pq: scala.collection.mutable.PriorityQueue[(Int, String)] = PriorityQueue()
scala> pq += Tuple2(8, "eight")
res60: pq.type = PriorityQueue((8,eight))
scala> pq += Tuple2(4, "four")
res61: pq.type = PriorityQueue((8,eight), (4,four))
scala> pq += Tuple2(7, "seven")
res62: pq.type = PriorityQueue((8,eight), (4,four), (7,seven))
Jak zastosować kolejność rosnącą według pierwszego elementu w momencie wstawienia do powyższego?
Dzięki
Użyłem drugiego przykładu i działa, dziękuję. W tym przykładzie, czy cała kolejka jest odwracana za każdym razem, gdy element jest wstawiany, czy kolejność ma miejsce tylko w przypadku wstawianego elementu? –
Nie za każdym razem - kolejka będzie zawsze porządkowana zgodnie z zamówieniem podanym podczas tworzenia (jedyną rzeczą, która jest odwrócona, jest instancja zamawiania i jest tworzona tylko raz). –
Podobnie jak jawny sposób deklarowania zamawiania: PriorityQueue.empty [A] (Zamawianie [A]), dziękuję! Nie podoba się konstruktorowi z niejawnym parametrem – gengmao