I am not sure how to implement a comparable interface into my abstract class. I have the following example code that I am using to try and get my head around it:
public class Animal{ public String name; public int yearDiscovered; public String population; public Animal(String name, int yearDiscovered, String population){ this.name = name; this.yearDiscovered = yearDiscovered; this.population = population; } public String toString(){ String s = "Animal name: "+ name+"\nYear Discovered: "+yearDiscovered+"\nPopulation: "+population; return s; } }
I have a test class that will create objects of type Animal however I want to have a comparable interface inside this class so that older years of discovery rank higher than low. I have no idea on how to go about this though.
We can implement the Comparable interface with the Movie class, and we override the method compareTo() of Comparable interface.
The implements keyword is used to implement an interface . The interface keyword is used to declare a special type of class that only contains abstract methods. To access the interface methods, the interface must be "implemented" (kinda like inherited) by another class with the implements keyword (instead of extends ).
Comparable interface is mainly used to sort the arrays (or lists) of custom objects. Lists (and arrays) of objects that implement Comparable interface can be sorted automatically by Collections.
The Java Comparable interface, java. lang. Comparable , represents an object which can be compared to other objects. For instance, numbers can be compared, strings can be compared using alphabetical comparison etc. Several of the built-in classes in Java implements the Java Comparable interface.
You just have to define that Animal implements Comparable<Animal>
i.e. public class Animal implements Comparable<Animal>
. And then you have to implement the compareTo(Animal other)
method that way you like it.
@Override public int compareTo(Animal other) { return Integer.compare(this.year_discovered, other.year_discovered); }
Using this implementation of compareTo
, animals with a higher year_discovered
will get ordered higher. I hope you get the idea of Comparable
and compareTo
with this example.
You need to:
implements Comparable<Animal>
to the class declaration; andint compareTo( Animal a )
method to perform the comparisons.Like this:
public class Animal implements Comparable<Animal>{ public String name; public int year_discovered; public String population; public Animal(String name, int year_discovered, String population){ this.name = name; this.year_discovered = year_discovered; this.population = population; } public String toString(){ String s = "Animal name: "+ name+"\nYear Discovered: "+year_discovered+"\nPopulation: "+population; return s; } @Override public int compareTo( final Animal o) { return Integer.compare(this.year_discovered, o.year_discovered); } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With