我正在尝试制定一个调度程序,其中两个演讲不能同时进行,尽管一个演讲可以在另一个演讲结束时继续进行。将第一个演讲放入 Scheduler 计划后,我想遍历 arrayList 中的每个演讲,并检查是否与计划中的最后一个演讲兼容。
我想我可以通过比较索引 i 的开始时间是否大于索引 i-1 的结束时间来检查。
我按 endTime 对我的演讲和讲座进行排序,并输入第一个数组。现在,我无法比较事件并将正确的事件添加到调度程序计划中。
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;
}
最佳答案
如果您使用ArrayList,那么您可以使用集合 ...
不要重新发明轮子并对列表进行排序
Collections.sort(events);
关于java - 使用 arrayList 的排序算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40957017/