Comparable è un’Interfaccia usata per definire l’ordinamento naturale degli oggetti di una classe. Implementando Comparable, una classe stabilisce un criterio di confronto “naturale” tra i suoi oggetti, permettendo di ordinarli. L’ordinamento avviene tramite Collections.sort() o strutture dati ordinate come TreeSet e TreeMap.
Package: java.lang
METODO compareTo()
public interface Comparable<T> {
int compareTo(T o);
}La classe che implementa Comparable deve definire il metodo:
@Override
int compareTo(T other);Il metodo compareTo confronta l’oggetto corrente (this) con l’oggetto other e deve restituire:
- Un numero negativo se
thisè “minore di”other - Zero se
thisè “uguale a” `other - Un numero positivo se
thisè “maggiore di”other
ESEMPIO
public class Persona implements Comparable<Persona> {
private String nome;
private int eta;
public Persona(String nome, int eta) {
this.nome = nome;
this.eta = eta;
}
// Ordinamento naturale per età
@Override
public int compareTo(Persona other) {
return this.eta - other.eta; // crescente per età
}
@Override
public String toString() {
return nome + " (" + eta + " anni)";
}
}Uso:
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
ArrayList<Persona> persone = new ArrayList<>();
persone.add(new Persona("Giulio", 20));
persone.add(new Persona("Andrea", 15));
persone.add(new Persona("Simone", 25));
Collections.sort(persone);
for (Persona p : persone) {
System.out.println(p);
}
}
}Output:
Andrea (15 anni)
Giulio (20 anni)
Simone (25 anni)