Visualizzazione dei risultati da 1 a 6 su 6

Visualizzazione discussione

  1. #4
    Utente di HTML.it L'avatar di Nikopol
    Registrato dal
    Jan 2011
    Messaggi
    120
    Grazie per la risposta ma mi è stato imposto dall'alto di non implementare Comparable nel grafo.
    Provo a spiegarmi meglio:
    ho un grafo fatto in questo modo:
    codice:
    public class SparseGraph<V, E extends DoubleSupplier> implements Graph<V, E>{...}
    dove V è il tipo dei vertici (nodi) e E è il tipo dell' arco che fra le altre informazioni contiene un valore Double che rappresenta il suo peso.
    codice:
    e poi la coda:
    public class PriorityQueueHeap<E, P extends Comparable<? super P>> implements PriorityQueue<E, P> {...}
    dove E è il tipo di elemento e P la sua priorità.
    Adesso dovrei inserire all' interno della coda i vertici del grafo come elementi della coda e il valore Double dell'arco(o tutto l'arco) come priorità della coda.
    Il problema è che la coda si aspetta che l'oggetto da usare come priorità implementi Comparable.
    La definizione di grafo non posso modificarla, invece posso cambiare come voglio la coda.
    Dando un occhiata al codice di PriorityQueue di Java ho capito che potrei risolvere scrivendo un costruttore che prenda anche un Comparator e dopo decidere se fare i confronti con Comparable o Comparator come qui: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/PriorityQueue.java#PriorityQueue.siftDown%28int%2C java.lang.Object%29)
    Dunque nel mio caso potrei passare un comparatore che confronta i getAsDouble di DoubleSupplier.
    Solo che non mi torna una cosa dell'implementazione della coda di Java: non mette restrizioni al tipo E dell'elemento, e se c'è il Comparator usa quello, altrimenti fa un cast a Comparable. Ma come fa a determinare che E sia castabile a Comparable? lo fa sulla fiducia sperando di non lanciare un eccezione?

    EDIT
    @Andbin non avevo visto il tuo messaggio. Per me è fondamentale poter modificare il valore della priorità di un elemento già presente nella coda. È il motivo che mi ha spinto ad usare una mia implementazione invece che quella fornita da Java
    Ultima modifica di Nikopol; 25-08-2015 a 15:51
    La Guida Galattica è infallibile.
    È la realtà, spesso, ad essere inesatta.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.