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());
}
}
}
}
출력 단계 4에서Java 및 JGraphT - 결과를 이해하지 못함 - 값/참조 문제 또는 다른 것으로 전달 하시겠습니까?
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
아니라 작업 시간의 모든 값들이 표시가 보여주는 3 단계에도 불구하고, 1111 ~ 9999로 변경 한 것으로서. 위 출력의 마지막 행에 대해 이야기하고 있습니다. 누군가 내가 무슨 일이 일어나는지 이해할 수 있도록 도와 줄 수 있습니까? 이것은 나를 미치게하고있다!
사과이 코드가 바로 실행되지 않는 경우 - 내가 수동으로 외부 세계 재정의 된 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
변경됨 - 사과 – user2682459
그럼 내가 잘못 본 것이 없습니다. [mcve]를 게시하십시오. –
지금 제가 얻은 결과를 게시했습니다. 나는 이것이 완전하고 검증 가능한 것을 만족시키기를 바랍니다. 내가 얼마나 더 작게 만들 수 있는지 잘 모르겠다. – user2682459