Vorrei ottenere un esempio di codice che compia l'ordine crescente di elementi in una coda di priorità.La coda di priorità ordinata Scala ha sempre il numero più basso come testa, ordine crescente
Desidero memorizzare Tuple2(Int, String)
all'interno di una coda di priorità in modo che sia ordinato dal primo elemento della tupla in ordine crescente. Se la mia coda di priorità è chiamata pq
e chiamo pq.head
vorrei ottenere la tupla con il numero più basso, stessa cosa con la chiamata 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))
Come applicare l'ordine crescente al primo elemento al momento dell'inserimento sopra?
Grazie
Ho usato il secondo esempio e funziona, grazie. In questo esempio, l'intera coda viene invertita ogni volta che viene inserito un articolo o l'ordine si verifica solo per l'elemento inserito? –
Non tutte le volte: la coda verrà sempre ordinata in base all'ordine che viene fornito al momento della creazione (l'unica cosa che viene invertita è l'istanza di ordine e creata una volta). –
Come il modo esplicito per dichiarare l'ordine: PriorityQueue.empty [A] (Ordine [A]), grazie! Non mi piace il costruttore con il parametro implicito – gengmao