// Event.java
public class Event implements Comparable<Event> {
...
@Override
public int compareTo(Event other) {
return this.priority - other.priority;
// sorts by priority, ascending
}
...
}
// Main.java
...
List<Event> sorted = events.stream()
.sorted() // calls compareTo() internally
.toList();
...
}
Similar to toString().
When we implement Comparable<Event>, it’s an interface.
So we have to implement compareTo.
Whatever you write in compareTo becomes the natural ordering: