2016-12-04 6 views
1

Ich versuche, ein Scheduling-Programm zu machen, wo keine zwei Gespräche zur gleichen Zeit ablaufen können, obwohl ein Gespräch fortfahren kann, wie das andere endet. Nachdem ich das erste Gespräch in den Scheduler-Plan gelegt habe, möchte ich jeden Vortrag in meiner Array-Liste durchgehen und prüfen, ob es mit dem letzten Gespräch im Zeitplan kompatibel ist.Sortieralgorithmus mit arrayLists

I Abbildung kann ich überprüfen, indem Sie vergleichen, ob die Startzeit von Index i größer als die Endzeit von Index i-1 ist.

Ich sortiert meine Vorträge und Vorträge von dort EndTime und gab das erste Array ein. Jetzt habe ich Probleme, die Ereignisse zu vergleichen und die richtigen in den Scheduler-Plan einzufügen.

public class Scheduler { 

private ArrayList<Event> events = new ArrayList <Event>(); 

public Scheduler(ArrayList<Event> events){ //Constructor 
    for (int i=0; i<events.size(); i++) 
     this.events.add(events.get(i)); 
    } 

    public ArrayList<Event> getsortSchedule(){ //Sorting Algorithm 
     int N = events.size() -1; 

      for (int i = 0; i <=(N-1); i++) 
     { 
       for(int j = 1; j <= N;j++) 
       { 
         if(events.get(i).getendTime().compareTo(events.get(j).getendTime()) > 0) 
         Collections.swap(events, i, j); 
       } 
     } 


     return events; 
    } 

    public Scheduler getSchedule(){ //Scheduling attempt 
     Scheduler plan = new Scheduler(events); 
     this.events.add(events.get(0)); 

     for (int i=0; i == events.size(); i++) 
     { 
      //if(events.get(i).getStartTime() > events.get(i).getendTime()) 
      //if(events.get(i).getStartTime().compareTo(events.get(l).getendTime()) > events.get(i-1).getendTime().compareTo(events.get(l).getendTime())) 
      this.events.add(events.get(i)); 
     } 

     return plan; 
    } 
+0

Was meinst du mit ** die Ereignisse vergleichen **? Sie vergleichen bereits mit dem Ereignis 'endtime' richtig (aber nicht mit' sammlung' 'sort' Methode)? – developer

Antwort

0

Wenn Sie Arraylist verwenden dann können Sie Kollektionen ...

verwenden nicht das Rad neu erfinden und die Liste sortieren tun

Collections.sort(events); 
+0

@ Xocę Aber ich muss die startTime und endTime vergleichen, um sicherzustellen, dass keine Ereignisse zur gleichen Zeit laufen, bevor ich sie in "Scheduler Plan" setze – ProgrammingBeginner24

+0

Wenn Sie mir einen Hinweis erlauben: kurze Antworten sind manchmal in Ordnung; aber ich denke, dass Sie sehr oft eine halbfertige, halbnichtige Antwort abwerfen. Ich denke, ein bisschen mehr von * Qualität * würde dir helfen, mehr Upvotes zu sammeln ... – GhostCat