This is my Scheduler Class that sorts the arraylist. I made a custom compareTo method that returns an int value of 1, -1 or 0.
private ArrayList<Event> events = new ArrayList<Event>();
public Scheduler(ArrayList<Event> events){
    for (int i=0; i<events.size(); i++)
    {
        this.events.add(events.get(i));
    }
} 
public ArrayList<Event> getSchedule(){
    int i;
    int j;
    int N = events.size();
        for (i = 0; i <=(N-1); i++)
    {
        for(j = 1; j <= N;j++)
        {
    if(events.get(i).getEndTime().compareTo(events.get(j).getEndTime()) > 0){
                Collections.swap(events, i, j);
            }
        }   
    }
    return events;
}
I call it later in my UI class
Scheduler s = new Scheduler(events);
        System.out.println("Schedule:");
    for(int i = 0; i<s.getSchedule().size(); i++){
        System.out.println(s.getSchedule().get(i)); 
        }
It's giving me an IndexOutofBoundError. Why is it giving me this error, and how can I fix it
 
    