0% found this document useful (0 votes)
2 views6 pages

Comparable

compare

Uploaded by

mosec50241
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views6 pages

Comparable

compare

Uploaded by

mosec50241
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

Java - How to Use Comparable?

Java Comparable Interface


Comparable interface is a very important interface which can be used by Java
Collections to compare custom objects and sort them. Using comparable interface,
we can sort our custom objects in the same way how wrapper classes, string objects
get sorted using Collections sorting methods.

Using comparable, we can make the elements as sortable.

Comparable Interface Methods


The Comparable interface defines a methods: compareTo(). The compareTo()
method, shown here, compares the passed object for order −

The compare() Method

int compareTo(Object obj)

obj is the object to be compared. This method returns zero if the objects are equal.
It returns a positive value if current object is greater than obj. Otherwise, a negative
value is returned.

By overriding compareTo(), you can alter the way that objects are ordered. For
example, to sort in a reverse order, you can implement a comparison method that
reverses the outcome of a comparison.

The equals() Method

The equals() method, shown here, tests whether an object equals the invoking
comparator −

boolean equals(Object obj)

obj is the object to be tested for equality. The method returns true if obj and the
invoking object are both Comparator objects and use the same ordering. Otherwise,
it returns false.

Overriding equals() is unnecessary, and most simple comparators will not do so.
Comparable Interface to Sort Custom Object
In this example, we're using Comparable interface to sort a custom object Dog based
on comparison criterias.

Example

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

class Dog implements Comparable<Dog> {


private String name;
private int age;
Dog() {
}

Dog(String n, int a) {
name = n;
age = a;
}

public String getDogName() {


return name;
}

public int getDogAge() {


return age;
}

// Overriding the compareTo method


public int compareTo(Dog d) {
// compare the name using alphabetical order
return (this.name).compareTo(d.name);
}

@Override
public String toString() {
return this.name + "," + this.age;
}
}
public class ComparableDemo {

public static void main(String args[]) {


// Takes a list o Dog objects
List<Dog> list = new ArrayList<>();

list.add(new Dog("Shaggy", 3));


list.add(new Dog("Lacy", 2));
list.add(new Dog("Roger", 10));
list.add(new Dog("Tommy", 4));
list.add(new Dog("Tammy", 1));

Collections.sort(list); // Sorts the array list


System.out.println("Sorted by name:");
// printing the sorted list of names
System.out.print(list);
}
}

Output

This will produce the following result −

Sorted by name:
[Lacy,2, Roger,10, Shaggy,3, Tammy,1, Tommy,4]

Note − Sorting of the Arrays class is as the same as the Collections.

Comparable Interface to Sort Custom Object in Reverse Order

Example

In this example, we're using Collections.reverseOrder() method to reverse sort the


Dog objects.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

class Dog implements Comparable<Dog> {


private String name;
p g ;
Dog() {
}

Dog(String n, int a) {
name = n;
age = a;
}

public String getDogName() {


return name;
}

public int getDogAge() {


return age;
}

// Overriding the compareTo method


public int compareTo(Dog d) {
return (this.name).compareTo(d.name);
}

@Override
public String toString() {
return this.name + "," + this.age;
}
}

public class ComparableDemo {

public static void main(String args[]) {


// Takes a list o Dog objects
List<Dog> list = new ArrayList<>();

list.add(new Dog("Shaggy", 3));


list.add(new Dog("Lacy", 2));
list.add(new Dog("Roger", 10));
list.add(new Dog("Tommy", 4));
list.add(new Dog("Tammy", 1));

Collections.sort(list, Collections.reverseOrder()); // Sorts the arra


System.out.println("Sorted by name in reverse order:");
p g
System.out.print(list);
}
}

Output

This will produce the following result −

Sorted by name in reverse order:


[Tommy,4, Tammy,1, Shaggy,3, Roger,10, Lacy,2]

Example

In this example, we're using Comparable interface to sort Dog objects based on their
ages.

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

class Dog implements Comparable<Dog> {


private String name;
private int age;
Dog() {
}

Dog(String n, int a) {
name = n;
age = a;
}

public String getDogName() {


return name;
}

public int getDogAge() {


return age;
}

// Overriding the compareTo method


public int compareTo(Dog d) {
return this.age - d.age;
}

@Override
public String toString() {
return this.name + "," + this.age;
}
}

public class ComparableDemo {

public static void main(String args[]) {


// Takes a list o Dog objects
List<Dog> list = new ArrayList<>();

list.add(new Dog("Shaggy", 3));


list.add(new Dog("Lacy", 2));
list.add(new Dog("Roger", 10));
list.add(new Dog("Tommy", 4));
list.add(new Dog("Tammy", 1));

Collections.sort(list); // Sorts the array list


System.out.println("Sorted by age:");
// printing the sorted list by age
System.out.print(list);
}
}

Output

This will produce the following result −

Sorted by age:
[Tammy,1, Lacy,2, Shaggy,3, Tommy,4, Roger,10]

You might also like