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:
Facing issues? Have Questions? Post them here! I am happy to answer!
Author Info:
Rakesh (He/Him) has over 14+ years of experience in Web and Application development. He is the author of insightful How-To articles for Code2care.
Follow him on: X
You can also reach out to him via e-mail: rakesh@code2care.org
More Posts related to Java,
- Get the current timestamp in Java
- Java Stream with Multiple Filters Example
- Java SE JDBC with Prepared Statement Parameterized Select Example
- Fix: UnsupportedClassVersionError: Unsupported major.minor version 63.0
- [Fix] Java Exception with Lambda - Cannot invoke because object is null
- 7 deadly java.lang.OutOfMemoryError in Java Programming
- How to Calculate the SHA Hash Value of a File in Java
- Java JDBC Connection with Database using SSL (https) URL
- How to Add/Subtract Days to the Current Date in Java
- Create Nested Directories using Java Code
- Spring Boot: JDBCTemplate BatchUpdate Update Query Example
- What is CA FE BA BE 00 00 00 3D in Java Class Bytecode
- Save Java Object as JSON file using Jackson Library
- Adding Custom ASCII Text Banner in Spring Boot Application
- [Fix] Java: Type argument cannot be of primitive type generics
- List of New Features in Java 11 (JEPs)
- Java: How to Add two Maps with example
- Java JDBC Transition Management using PreparedStatement Examples
- Understanding and Handling NullPointerException in Java: Tips and Tricks for Effective Debugging
- Steps of working with Stored Procedures using JDBCTemplate Spring Boot
- Java 8 java.util.Function and BiFunction Examples
- The Motivation Behind Generics in Java Programming
- Get Current Local Date and Time using Java 8 DateTime API
- Java: Convert Char to ASCII
- Deep Dive: Why avoid java.util.Date and Calendar Classes
More Posts:
- Tailwind CSS Hello World Example - CSS
- Dynamically Obtaining Browser Screen Width and Height with jQuery [Updated 2023] - jQuery
- Fix- Microsoft Word Pages Appear Black - Microsoft
- Bash For Loop Example - Bash
- Setting Java_Home Environment variable on Windows Operating System - Java
- How to Add Edit with Notepad++ Option to Windows 10 or 11 Right Click Menu Options - Windows-11
- This Toast was not created with Toast.makeText() : Android RuntimeException - Android
- sudo is not recognized as an internal or external command - Windows