Ciao a tutti,
ho implementato una coda prioritaria fatta in questo modo :
dove E è il tipo dell'elemento, e P è la sua priorità e PriorityQueue è un interfaccia dichiara i metodi generici di una coda qualsiasi.codice:public class PriorityQueueHeap <E, P extends Comparable<? super P>> implements PriorityQueue<E, P>{...}
Il problema nasce dal fatto che adesso dovrei usare la coda per implementare un algoritmo che lavora su i nodi di un grafo i quali non possono implementare Comparable in quanto non abbastanza restrittivo.
Infatti gli oggetti che dovrei usare per la priorità devono poter essere comparati esclusivamente in base a un valore double dato da getAsDouble() dell'interfaccia DoubleSupplier e non da un generico criterio dato dall'implementazione di Comparable.
La cosa più banale sarebbe scrivere una coda esclusivamente per questo caso che prende come priorità oggetti P extends DoubleSupplier e fare tutti i confronti con >, <, = inceve che con il compareTo, solo che non mi sembra la soluzione migliore.
Quindi mi chiedevo se c'è un modo per poter cambiare la coda in modo da riuscire a gestire anche questo particolare caso, ad esempio sfruttando i comparatori (con i quali non ho molto confidenza).
Grazie in anticipo per qualsisi aiutao potrete darmi![]()