Set<> auslesen

Status
Nicht offen für weitere Antworten.

simon1101

Mitglied
Hallo,

ich habe folgendes Problem. Ich habe eine Klasse SearchNode in der ich diverse Knoten und Entfernungen speichern kann, die Beziehungen der Knoten und Distanzen werden in der Klasse SearchEdge angelegt:

Code:
/**
public class SearchNode extends Node
{
    private int entfernung = 0;
    private SearchEdge vorgaenger;
    
    public SearchNode(String label, int entfernung, SearchEdge vorgaenger) {
        super(label);
        this.entfernung = Integer.MAX_VALUE;
        this.vorgaenger = null;
    }
    
    public int getEntfernung() {
        return entfernung;
    }
    
    public void setEntfernung(int entfernung) {
        this.entfernung = entfernung;
    }
    
    public SearchEdge getVorgaenger() {
        return vorgaenger;
    }
    
    public void setVorgaenger(SearchEdge vorgaenger) {
        this.vorgaenger = vorgaenger;
    }
}

Code:
public class SearchEdge extends Edge
{
    private boolean bold;
    private SearchNode start;
    private SearchNode end;
    private int distance;
    
    SearchEdge(SearchNode start, SearchNode end, int distance, boolean bold) {
        super(start, end, distance);
        this.bold = bold;
    }
    
    public boolean getBold() {
        return bold;
    }
    
    public void setBold() {
        bold = true;
    }
    
    public String toString() {
        if(bold == true) {
            return start.getName() + " -- " + end.getName()
				+ " [label=\"" + distance + "\"];" + " [,style=\"" + bold + "\"];";
        }
        else {
            super.toString();
        }
 
    return toString(); 
    }
    
    private void joinsNode(SearchNode node) {
        
        boolean kante = false;
        
        if(node == start || node == end) {
            kante = true;
        } 
        else {
            kante = false;
        }
            
    }
    

    private SearchNode getOtherNode(SearchNode node) {
        SearchNode othernode = start;
        
        if(node != othernode) {
            othernode = end;
        }
        
        return othernode;
    }
}

Die "Hauptklasse" Graph sieht so aus:
Code:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

public class Graph<T extends Node, S extends Edge> {
	
	/** die Menge der Knoten */
	private final List<T> nodes;
	
	/** die Menge der Kanten */
	private final List<S> edges;
	
	/**
	 * Konstruktor
	 */
	public Graph() {
		this.nodes = new ArrayList<T>();
		this.edges = new ArrayList<S>();
	}
	
	/**
	 * Getter
	 * 
	 * @return die <b>Menge</b> aller bekannten <b>Edge</b>-Objekte, die dem Graphen angeh&ouml;ren. 
	 */
	public List<S> getEdges() {
		return this.edges;
	}
	
	/**
	 * F&uuml;gt ein <b>Edge</b>-Objekt zum Graphen hinzu.
	 * 
	 * @param kante die hinzugefügt werden soll.
	 */
	public void addEdge(final S edge) {
		this.edges.add(edge);
	}
	
	/**
	 * Getter
	 * 
	 * @return die <b>Menge</b> aller bekannten <b>Node</b>-Objekte, die dem Graphen angeh&ouml;ren.
	 */
	public List<T> getNodes() {
		return this.nodes;
	}
	
	/**
	 * F&uuml;gt ein <b>Node</b>-Objekt zum Graphen hinzu.
	 * 
	 * @param kante die hinzugefügt werEdgeden soll.
	 */
	public void addNode(final T node) {
		this.nodes.add(node);
	}
	
	/**
	 * Diese Methode schreibt den gegebenen Graphen inklusive aller Knoten und Kanten
	 * in eine Datei namens out[nummer].dot. Wobei [nummer] um eins erh&ouml;ht wird, falls die
	 * Datei out.dot bereits besteht. 
	 * 
	 * Diese Methode benutzt die toString()-Methode des Graphen, welche den Inhalt der 
	 * zu schreibenden Datei vorbereitet.
	 * 
	 * @return true wenn die Aktion erfolgreich war, ansonsten false.
	 */
	public boolean writeGraph() {
		return writeGraph(this);
	}
	
	/**
	 * @see {@link #writeGraph()}
	 * 
	 * @param Graph  
	 * @return true oder false
	 */
	private static boolean writeGraph(final Graph graph) {
		
		File out = new File(System.getProperty("user.dir")
				+ System.getProperty("file.separator") + "out.dot");
		
		int i = 1;
		
		while (out.exists()) {
			out = new File(System.getProperty("user.dir")
					+ System.getProperty("file.separator") + "out" + i + ".dot");
			i++;
		}
		
		try {
			final FileWriter writer = new FileWriter(out);
			writer.write(graph.toString());
			writer.flush();
			writer.close();
		} catch (final IOException e) {
			return false;
		}
		
		return true;
	}
	
	/**
	 * Diese Methode benutzt die toString()-Methoden der Node- und Edge-Objekte, um 
	 * den Graphen im dot-Format auszugeben. (Voraussetzung daf&uuml;r ist, dass die 
	 * toString()-Methoden der Klasse Node und Edge das richtige Format erzeugen.)
	 * 
	 * @return den Graph als String im dot-Format.
	 */
	public String toString() {
		final StringBuilder result = new StringBuilder();
		
		result.append("graph{");
		result.append("\n");
		
		for (final Edge edge : getEdges()) {
			result.append(edge.toString());
			result.append("\n");
		}
		
		for (final Node node : getNodes()) {
			result.append(node.toString());
			result.append("\n");
		}
		
		result.append("}");
		
		return result.toString();
	}
}

Nun will ich mir in einer Klasse Routenplaner in der Methode SearchNode getMinimalNode ein Set<SearchNode> übergeben lassen und dieses dahingehend auslesen, dass der Knoten mit der kleinsten entfernung zurückgegeben wird.
Code:
import java.util.*;

public class Routenplaner
{
    public Graph<SearchNode, SearchEdge> graph;
    private SearchNode startknoten;
    private SearchNode zielknoten;
    HashSet<SearchNode> unbesuchteknoten;
    HashSet<SearchNode> benachbarteknoten;
    
     public Routenplaner(Graph<SearchNode, SearchEdge> graph) {
        this.graph = graph;
    }
   
    public SearchNode getStartKnoten() {
        return startknoten;
    }
    
    public SearchNode getZielKnoten() {
        return zielknoten;
    }
    
    public void setStartKnoten(SearchNode startknoten) {
        this.startknoten = startknoten;
    }
    
    public void setZielKnoten(SearchNode zielknoten) {
        this.zielknoten = zielknoten;
    }

    [B]public SearchNode getMinimalNode(Set<SearchNode> kleinsteentfernung) {
        
	}[/B]
    
    public SearchNode getNextEdges(SearchNode ausgangsknoten) {
        set<SearchEdge> kanten = null;
        
        return kanten;
    }
}

Ich habe es schon mit Iteratoren und Umwandlung des Sets in ein Array versucht, stehe aber voll auf dem Schlauch, wie ich dem Set die benötigte Information entlocken kann???:L Hoffe es kann mir jemand sagen, wie das funktioniert.

Viele Grüße
Simon
 
Zuletzt bearbeitet:
B

bygones

Gast
Collections.min(kleinsteentfernung);

wobei dein SearchNode dann das Comparable Interface implementieren muss so dass die kleinste Entfernung genommen wird.

oder Collections.min(kleinsteentfernung, new Comparator...) einen Comparator geben der dann nur in diesem Fall dein Set sortiert
 

simon1101

Mitglied
Danke erstmal.

Ich habe beides Probiert, bekomme es aber nicht zum Laufen? Woher weiß die Collection enn, dass sie mir den Wert der kleinsten Entfernung des Sets zurückgeben soll?

Gruß
Simon
 

simon1101

Mitglied
Hallo,

ich habe es jetzt mal so versucht:

Code:
public SearchNode getMinimalNode(Set<SearchNode> kleinsteentfernung) {
        SearchNode kurzer = null;
        
        Collections.min(kleinsteentfernung, ???);
        
        return kurzer;
	}

Ich will ja den kleinsten Knoten zurückgegeben bekommen.
An der Stelle mit den Fragezeichen soll ich ja den Comparator initialisieren, aber wie mache ich das konkret. Stehe gerade voll auf dem Schlauch. Kann mir jemand anhand der geposteten Methode einen konkreten Comperator reinbasteln, so dass das Ding läuft? Wäre super.

Gruß,
Simon
 
S

SlaterB

Gast
der Rückgabewert der Methode ist doch unverkennbar SearchNode,
was willst du mehr?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Drucker voreingestelltes Papierformat auslesen Java Basics - Anfänger-Themen 0
A Buchstaben auslesen lassen vom Scanner Java Basics - Anfänger-Themen 18
G JComboBox ist editable und eingegebenen Text auslesen bei focusLost() Java Basics - Anfänger-Themen 1
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
T array auslesen Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
D Eclipse will nicht auslesen Java Basics - Anfänger-Themen 6
E TIF Datei auslesen Java Basics - Anfänger-Themen 2
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
sserio TXT-Datei Auslesen und den Wert jedes Namen ausrechnen etc. Java Basics - Anfänger-Themen 37
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
U Sekunden von LocalTime auslesen, wie möglich? Java Basics - Anfänger-Themen 1
E Outlook ordner auslesen Java Basics - Anfänger-Themen 4
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
J Datei aus Netzwerk auslesen Java Basics - Anfänger-Themen 9
J Jsonfile auslesen Java Basics - Anfänger-Themen 8
A Eine Textdatei auslesen Java Basics - Anfänger-Themen 16
N Aus einem String die Anzahl der Vokale auslesen Java Basics - Anfänger-Themen 40
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
J Bestimmte parameter aus Jsonfile auslesen Java Basics - Anfänger-Themen 15
AleXusher Mehrdimensionales Array aus txt.file auslesen Java Basics - Anfänger-Themen 4
L Zeichen an bestimmter Stelle auslesen Java Basics - Anfänger-Themen 4
3 Textdatei Zeilenweise auslesen Java Basics - Anfänger-Themen 3
J Json Datei auslesen Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
S Tastatureingabe auslesen und in Konsole ausgeben Java Basics - Anfänger-Themen 6
S CSV Datei auslesen und anders darstellen Java Basics - Anfänger-Themen 2
G Scanner nutzen und Index auslesen Java Basics - Anfänger-Themen 8
N JTable auslesen Java Basics - Anfänger-Themen 6
N Java CSV Datei auslesen Java Basics - Anfänger-Themen 6
F Webseiten Quelltext auslesen Java Basics - Anfänger-Themen 5
J Datei auslesen (nur bestimmte Stellen) Java Basics - Anfänger-Themen 2
I csv auslesen, mittels List Java Basics - Anfänger-Themen 18
S Letzte Zahl eines Integer auslesen? Java Basics - Anfänger-Themen 3
G If / While Programm (Datei auslesen) Java Basics - Anfänger-Themen 6
S Aus einer .bz2 Datei auslesen Java Basics - Anfänger-Themen 2
K Textdatei auslesen und über Mqtt schicken Java Basics - Anfänger-Themen 4
B Name von Verzeichnis bekommen - Files von einem Ordner auslesen Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
D XML von Seite auslesen Jsoup Java Basics - Anfänger-Themen 2
I Druckerauflösung auslesen - mittlerweile möglich? Java Basics - Anfänger-Themen 4
B WSDL auslesen? Java Basics - Anfänger-Themen 8
D Methoden Textdokument erstellen und auslesen. Java Basics - Anfänger-Themen 46
B HTML Code / Seite auslesen und JAVA Objekte erstellen Java Basics - Anfänger-Themen 12
S Datein auslesen und verarbeiten Java Basics - Anfänger-Themen 1
J Geld speichern und wieder auslesen Java Basics - Anfänger-Themen 10
S CSV auslesen UTF-8 Problem Java Basics - Anfänger-Themen 7
D Datei auslesen & Werte in Variable speichern Java Basics - Anfänger-Themen 12
K String buchstaben auslesen Java Basics - Anfänger-Themen 9
S Amazon Produktbeschreibung auslesen und nach Keywords suchen Java Basics - Anfänger-Themen 2
x-tshainge Interface Wie kann ich aus Textfeldern auslesen Java Basics - Anfänger-Themen 6
Z Ersten Buchstaben eines Elements eines String-Arrays auslesen Java Basics - Anfänger-Themen 5
B .txt. Datei auslesen und bestimmten Wert wiedergeben Java Basics - Anfänger-Themen 5
CptK x wert eines Bildes auslesen Java Basics - Anfänger-Themen 1
T Website auslesen Java Basics - Anfänger-Themen 2
T String auslesen bzw. überprüfen Java Basics - Anfänger-Themen 1
L CSV Auslesen Java Basics - Anfänger-Themen 5
B Auslesen von PDF / Bilder Java Basics - Anfänger-Themen 5
das_leon Alle Zeilen einer CSV-Datei auslesen Java Basics - Anfänger-Themen 1
D Mit Java HTML bzw Javascript auslesen Java Basics - Anfänger-Themen 1
F Arrays Sätze speichern und einzelne Worte mit Index Angabe auslesen Java Basics - Anfänger-Themen 4
F Zwischenwerte aus Browser auslesen Java Basics - Anfänger-Themen 19
S Jede Ziffer einer Zahl auslesen, damit rechnen und beim Ergebnis wiederholen ? Java Basics - Anfänger-Themen 20
G Servlet - externe HTML (URL) auslesen Java Basics - Anfänger-Themen 1
T class Datei auslesen Java Java Basics - Anfänger-Themen 5
P Liste auslesen und in Variablen speichern Java Basics - Anfänger-Themen 7
D String erste Zahl mit LKZ auslesen lassen Java Basics - Anfänger-Themen 36
J Hashmap auslesen Java Basics - Anfänger-Themen 7
J Auslesen/speichern und wieder einlesen Java Basics - Anfänger-Themen 7
D String untereinander auslesen lassen Java Basics - Anfänger-Themen 2
M Aus Datei auslesen und untersuchen ob diese Zeile schon vorhanden ist Java Basics - Anfänger-Themen 3
DaCrazyJavaExpert Variablen Zahlen aus Strings auslesen Java Basics - Anfänger-Themen 4
J Informationen aus Webseiten auslesen Java Basics - Anfänger-Themen 1
S Text aus einer HTML Datei auslesen Java Basics - Anfänger-Themen 1
M Einzelne Pixel in einem Bild auslesen und bearbeiten Java Basics - Anfänger-Themen 1
dragonfight86 Erste Schritte OpenDocument auslesen Java Basics - Anfänger-Themen 13
I Texte mit Absätzen in Dateien speichern und auslesen Java Basics - Anfänger-Themen 1
W DNS Name auslesen + weitere Anfängerfrage Java Basics - Anfänger-Themen 4
C Werte aus JTable auslesen Java Basics - Anfänger-Themen 4
Chrizzey45 Calc-Dokument in Java auslesen? Java Basics - Anfänger-Themen 2
B Datei auslesen und 2D-Array anlegen Java Basics - Anfänger-Themen 1
B Key auslesen/ausgeben innerhalb von foreach() Java Basics - Anfänger-Themen 5
M Eigenschaften einer Datei auslesen Java Basics - Anfänger-Themen 5
M Textarea auslesen und beschreiben Java Basics - Anfänger-Themen 8
J Klassen Klasse Queue Klasse mit Attributen anhängen und auslesen können Java Basics - Anfänger-Themen 4
Y Bildschirmauflösung auslesen Java Basics - Anfänger-Themen 4
S for schleife auslesen Java Basics - Anfänger-Themen 4
Voreck String Zeichen für Zeichen auslesen Java Basics - Anfänger-Themen 9
Voreck Array aus txt datei auslesen Java Basics - Anfänger-Themen 2
N JFreeChart --> TimeSeries auslesen Java Basics - Anfänger-Themen 9
OlafHD Datei Auslesen Java Basics - Anfänger-Themen 6
M Metadaten OpenOffice mit Java auslesen Java Basics - Anfänger-Themen 9
P JList, aus selectedValue bestimmten Wert aus Containerklasse auslesen Java Basics - Anfänger-Themen 4
J OpenOffice Dokumentenvariable mit Java auslesen Java Basics - Anfänger-Themen 1
P Daten von Internetseite auslesen Java Basics - Anfänger-Themen 10
L Text eingeben und im Textfeld auslesen lassen Java Basics - Anfänger-Themen 2
T Combobox Wert auslesen und damit weiterrechnen Java Basics - Anfänger-Themen 6
J Datei auslesen klappt nicht Java Basics - Anfänger-Themen 4

Ähnliche Java Themen


Oben