We use Comparator when we want to sort elements in a Collection based on a custom-defined order.
import java.util.Objects;
public class MusicAlbum {
private String title;
private String artist;
private int releaseYear;
public MusicAlbum(String title, String artist, int releaseYear) {
this.title = title;
this.artist = artist;
this.releaseYear = releaseYear;
}
public String getTitle() {
return title;
}
public String getArtist() {
return artist;
}
public int getReleaseYear() {
return releaseYear;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MusicAlbum that = (MusicAlbum) o;
return releaseYear == that.releaseYear &&
Objects.equals(title, that.title) &&
Objects.equals(artist, that.artist);
}
@Override
public int hashCode() {
return Objects.hash(title, artist, releaseYear);
}
@Override
public String toString() {
return "MusicAlbum{" +
"title='" + title + '\'' +
", artist='" + artist + '\'' +
", releaseYear=" + releaseYear +
'}';
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<MusicAlbum> albums = new ArrayList<>();
albums.add(new MusicAlbum("Pulse", "Pink Floyd", 1971));
albums.add(new MusicAlbum("Parachutes", "Coldplay", 2000));
albums.add(new MusicAlbum("Thriller", "Michael Jackson", 1982));
albums.add(new MusicAlbum("Back in Black", "AC/DC", 1980));
//Using Comparator to sort by release year
Collections.sort(albums, Comparator.comparingInt(MusicAlbum::getReleaseYear));
//Result: 1
System.out.println("Sorting by album released year");
for (MusicAlbum album : albums) {
System.out.println(album);
}
//Using Comparator to sort by album artist
Collections.sort(albums, Comparator.comparing(MusicAlbum::getArtist));
//Result: 1
System.out.println("Sorting by album artist");
for (MusicAlbum album : albums) {
System.out.println(album);
}
}
}
Output:
Provide Feedback For This Article
We take your feedback seriously and use it to improve our content. Thank you for helping us serve you better!
😊 Thanks for your time, your feedback has been registered!
Comments & Discussion
Facing issues? Have questions? Post them here! We're happy to help!