Skip to main content

Java Interview Question: Comparator vs Comparable in Java (With Examples & Differences)

 

🔹 Introduction

Sorting objects is a common requirement in Java, and interviewers often ask:

👉 “What is the difference between Comparator and Comparable?”


🔹 What is Comparable?

Comparable is used to define natural sorting.

👉 It is implemented inside the class itself


🔹 Example (Comparable)

import java.util.*;

class Employee implements Comparable<Employee> {
int salary;

Employee(int salary) {
this.salary = salary;
}

public int compareTo(Employee e) {
return this.salary - e.salary;
}
}

public class Test {
public static void main(String[] args) {
List<Employee> list = Arrays.asList(
new Employee(50000),
new Employee(30000),
new Employee(70000)
);

Collections.sort(list);

list.forEach(e -> System.out.println(e.salary));
}
}

🔹 What is Comparator?

Comparator is used to define custom sorting.

👉 It is implemented outside the class


🔹 Example (Comparator)

import java.util.*;

class Employee {
int salary;

Employee(int salary) {
this.salary = salary;
}
}

public class Test {
public static void main(String[] args) {
List<Employee> list = Arrays.asList(
new Employee(50000),
new Employee(30000),
new Employee(70000)
);

list.sort((a, b) -> b.salary - a.salary);

list.forEach(e -> System.out.println(e.salary));
}
}

🔍 Key Differences

FeatureComparableComparator
Packagejava.langjava.util
MethodcompareTo()compare()
Sorting TypeNaturalCustom
LocationInside classOutside class

🔹 When to Use What?

✔ Use Comparable

  • Default sorting
  • Only one logic needed

✔ Use Comparator

  • Multiple sorting logic
  • External control

🔹 Time Complexity

  • O(n log n)

🔹 Key Takeaways

✔ Comparable → internal sorting
✔ Comparator → external/custom sorting
✔ Both are important for interviews


🔹 Conclusion

Understanding Comparator and Comparable is essential for sorting objects efficiently in Java.

Comments

  1. Post was quite helpful for an interview...

    ReplyDelete
    Replies
    1. Thank you so much! Glad it helped you in your interview 😊
      I’ll be posting more such questions and explanations—stay tuned!

      Delete

Post a Comment

Popular posts from this blog

Top Java Interview Question: First Non-Repeating Character in a String

  🔹 Introduction Java interviews often include string-based questions. One of the most commonly asked questions is: 👉 Find the first non-repeating character in a string. In this article, we will solve it step by step in a simple and easy-to-understand way. 🔹 Problem Statement Given a string, find the first character that does not repeat. Example: Input: aabbcde Output: c 🔹 Approach To solve this problem efficiently: Count frequency of each character Maintain insertion order Traverse again to find the first character with frequency = 1 👉 We use LinkedHashMap because: It maintains insertion order Helps us find the first non-repeating character 🔹 Java Code import java . util . *; public class FirstNonRepeating { public static void main ( String [] args ) { String str = "aabbcde" ; Map < Character , Integer > map = new LinkedHashMap <>(); // Count frequency for ( char ch : str . to...

Java Interview Question: Separate Even and Odd Numbers Using Streams (With Examples)

  🔹 Introduction Separating even and odd numbers is a common Java interview question. It helps test your understanding of Java Streams, filtering, and partitioning . 👉 In this article, we will solve this using: Traditional approach Java Streams (modern approach) 🔹 Problem Statement Given a list of integers, separate even and odd numbers. Example: Input: [1, 2, 3, 4, 5, 6] Output: Even: [2, 4, 6], Odd: [1, 3, 5] 🔹 Approach 1: Using Loop (Basic) 💡 Explanation Traverse list Check number % 2 Store in separate lists 👨‍💻 Java Code import java . util . *; public class EvenOdd { public static void main ( String [] args ) { List < Integer > list = Arrays . asList ( 1 , 2 , 3 , 4 , 5 , 6 ); List < Integer > even = new ArrayList <>(); List < Integer > odd = new ArrayList <>(); for ( int num : list ) { if ( num % 2 == 0 ) { even . add ( num )...

Java Interview Question: Check if a String is a Palindrome

 🔹 Introduction String problems are very common in Java interviews. One of the easiest yet frequently asked questions is: 👉 Check whether a given string is a palindrome. Let’s understand how to solve it step by step. 🔹 Problem Statement A string is called a palindrome if it reads the same forward and backward. Example: Input: madam Output: Palindrome Input: hello Output: Not a Palindrome 🔹 Approach 1: Using Two Pointers (Best Method) Start one pointer from the beginning Start another pointer from the end Compare characters If all match → Palindrome 🔹 Java Code (Two Pointer Approach) public class PalindromeCheck { public static void main ( String [] args ) { String str = "madam" ; int left = 0 ; int right = str . length () - 1 ; boolean isPalindrome = true ; while ( left < right ) { if ( str . charAt ( left ) != str . charAt ( right )) { isPalindr...