Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Ciclare una HashMap

Visualizzazione discussione

  1. #1

    Ciclare una HashMap

    Ciao a tutti, ho creato una classe SparseGraph che rappresenta un grafo orientato pesato.
    Per farlo ho usato una HashMap fatta così:


    codice:
    public HashMap<V,HashMap<V, E>> map = newHashMap<V,HashMap<V, E>>();

    Nella classe ci sono i seguenti metodi (che funzionano):

    codice:
    public E getData(V vertex1, V vertex2){
        if(!hasVertex(vertex1)||!hasVertex(vertex2)) 
            returnnull;
        else
            return map.get(vertex1).get(vertex2);
    }
    
    publicCollection<V> getVertices(){
        return map.keySet();
    }
    
    publicCollection<V> getNeighbors(V vertex){
      if(!hasVertex(vertex)) 
        returnnull;
      else
        return map.get(vertex).keySet();
    }

    Ora dovrei creare un metodo che mi permetta di stampare il grafico usando Graphviz. Quindi questo metodo deve ritornare una stringa come questa:

    codice:
    digraph G {
      "v1"->"v2"[label ="2"];
      "v2"->"v3"[label ="3"];
      "v1"->"v3"[label ="1"];
      "v2"->"v3"[label ="5"];
    }

    Dove "v_i" sono i vertici.
    Il problema è che non so ciclare il grafo. Ho scritto questo codice ma non cicla su tutti i nodi e inoltre non so come risalire al peso degli archi.

    codice:
    publicString print(){
      String g ="digraph G {\n";
      Collection<V> vertices = getVertices();
      for(V v : vertices){
        Collection<V> neighbors = getNeighbors(v);
        for(V n : neighbors){
          g = g +"\t\""+ v +"\" -> \""+ n +"\" [label = \""+ v +"\"];\n";
        }
    
      }
      g = g +"}\n";
      return g;
    }

    Qualcuno potrebbe aiutarmi?
    Grazie mille
    Ultima modifica di stefano86; 29-05-2015 a 10:23

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.