import org.jgrapht.*;
import org.jgrapht.graph.*;
public class Example {
// Cut down version of Job class
private static class Job {
private final int jobNumber;
private int jobTime;
Job(int jobNumber){
this.jobNumber = jobNumber;
this.jobTime = 9999; // A dummy value to make my issue obvious
}
public int getJobNumber(){
return jobNumber;
}
public int getJobTime(){
return jobTime;
}
public void setJobTime(int jobTime){
this.jobTime=jobTime;
}
// eclipse derived
@Override
public int hashCode(){
final int prime = 31;
int result = 1;
result = prime * result + jobNumber ;
return result;
}
// eclipse derived
@Override
public boolean equals(Object obj) {
if (this ==obj) return true;
if (obj==null) return false;
if (getClass() != obj.getClass()) return false;
Job other = (Job) obj;
if (jobNumber != other.jobNumber) return false;
return true;
}
@Override
public String toString() {
return Integer.toString(System.identityHashCode(this));
}
}
public static void main(String[] args) {
// Create a graph
final DirectedGraph<Job, DefaultEdge> schedule = new DefaultDirectedGraph<Job,DefaultEdge>(DefaultEdge.class);
// Create some jobs and add to graph
// Job 2 depends on Job 1 depends on Job 0
Job job;
Job dependsOnJob;
int counter=1;
while (counter < 3) {
int jobNumber = counter;
int dependsOnJobNumber = counter - 1;
job = new Job(jobNumber);
dependsOnJob = new Job(dependsOnJobNumber);
schedule.addVertex(job);
schedule.addVertex(dependsOnJob);
schedule.addEdge(dependsOnJob,job);
counter++;
}
// Print the current values of job numbers and times
// 1.
for (Job j : schedule.vertexSet()){
System.out.println("Create Schedule View Jobs " + j + " " + j.getJobNumber() + " " + j.getJobTime());
}
// 2.
for (Job j : schedule.vertexSet()){
for (DefaultEdge e : schedule.incomingEdgesOf(j)){
Job source = schedule.getEdgeSource(e);
System.out.println("Create Schedule View Prior Job " + source + " " + source.getJobNumber() + " " + source.getJobTime());
}
}
// Change all job times to 1111
for (Job j : schedule.vertexSet()){
System.out.println("Setting " + j);
j.setJobTime(1111);
}
// Print the new values of job numbers and times
// 3.
for (Job j : schedule.vertexSet()){
System.out.println("Added Times View Jobs " + j + " " + j.getJobNumber() + " " + j.getJobTime());
}
// 4.
for (Job j : schedule.vertexSet()){
for (DefaultEdge e : schedule.incomingEdgesOf(j)){
Job source = schedule.getEdgeSource(e);
System.out.println("Added Times View Prior Job " + source + " " + source.getJobNumber() + " " + source.getJobTime());
}
}
}
}
AusgabeJava und JGraphT - Ergebnis nicht verstehen - Pass auf Wert/Referenz Problem oder etwas anderes?
Create Schedule View Jobs [email protected] 1 9999
Create Schedule View Jobs [email protected] 0 9999
Create Schedule View Jobs [email protected] 2 9999
Create Schedule View Prior Job [email protected] 0 9999
Create Schedule View Prior Job [email protected] 1 9999
Setting [email protected]
Setting [email protected]
Setting [email protected]
Added Times View Jobs [email protected] 1 1111
Added Times View Jobs [email protected] 0 1111
Added Times View Jobs [email protected] 2 1111
Added Times View Prior Job [email protected] 0 1111
Added Times View Prior Job [email protected] 1 9999
In Schritt 4 nicht alle Werte für Stückzeiten zeigen, wie 9999-1111 geändert wurde, trotz Schritt 3 zeigen, dass sie haben. Ich spreche von der letzten Zeile der obigen Ausgabe. Könnte mir jemand helfen zu verstehen, was vor sich geht? Das macht mich verrückt!
Entschuldigt, wenn dieser Code nicht sofort ausgeführt werden - ich habe es manuell gegenüber einem System kopiert nicht mit der Außenwelt verbunden
Mit der überschriebenen toString:
Create Schedule View Jobs 225534817 1 9999
Create Schedule View Jobs 1878246837 0 9999
Create Schedule View Jobs 929338653 2 9999
Create Schedule View Prior Job 1878246837 0 9999
Create Schedule View Prior Job 1259475182 1 9999
Setting 225534817
Setting 1878246837
Setting 929338653
Added Times View Jobs 225534817 1 1111
Added Times View Jobs 1878246837 0 1111
Added Times View Jobs 929338653 2 1111
Added Times View Prior Job 1878246837 0 1111
Added Times View Prior Job 1259475182 1 9999
Geändert - Entschuldigung – user2682459
Dann sehe ich nichts falsch. Bitte poste ein [mcve]. –
Ich habe die Ausgabe gepostet, die ich jetzt bekomme. Ich hoffe, dass dies das vollständige und überprüfbare erfüllt. Ich bin mir nicht sicher, wie viel ich rausschneiden kann, um es minimal zu machen. – user2682459