0Pricing
Java Academy · Aula

Comparable e Comparator

Aprenda a diferença entre Comparable e Comparator para ordenação personalizada. Pratique compareTo e Comparators externos.

Comparable e Comparator é uma aula grátis de Java Academy no CoddyKit. Esta é a aula 2 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Java Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Java Academy inclui 3 aulas no total.

Introdução

A ordenação precisa de regras. Comparable e Comparator são duas formas de defini-las:

  • Comparable: a classe implementa compareTo.
  • Comparator: um objeto separado é passado para sort().

Conceito de Comparable

Comparable permite que uma classe defina sua ordem natural. Implemente compareTo para que Collections.sort saiba como ordenar os itens.

Código: Comparable

Aqui, Person implementa Comparable e ordena os elementos pela idade. Isso define sua ordem natural.

public class Main {
  static class Person implements Comparable<Person> {
    String name;
    int age;
    Person(String n, int a) { name = n; age = a; }
    public int compareTo(Person o) {
      return this.age - o.age; // order by age
    }
    public String toString() { return name + "(" + age + ")"; }
  }
  public static void main(String[] args) {
    java.util.List<Person> list = new java.util.ArrayList<>();
    list.add(new Person("Ada",30));
    list.add(new Person("Bob",25));
    java.util.Collections.sort(list);
    System.out.println(list); // [Bob(25), Ada(30)]
  }
}

Conceito de Comparator

Comparator é externo. Ele pode ordenar a mesma classe de maneiras diferentes, por exemplo, pelo nome em vez da idade.

Código: Comparator

Este Comparator ordena pelo nome. Diferentes Comparators podem ser reutilizados na mesma classe.

public class Main {
  static class Person {
    String name; int age;
    Person(String n,int a){ name=n; age=a; }
    public String toString(){ return name+"("+age+")"; }
  }
  public static void main(String[] args) {
    java.util.List<Person> list = new java.util.ArrayList<>();
    list.add(new Person("Ada",30));
    list.add(new Person("Bob",25));

    java.util.Comparator<Person> byName = (p1,p2) -> p1.name.compareTo(p2.name);
    java.util.Collections.sort(list, byName);
    System.out.println(list); // [Ada(30), Bob(25)]
  }
}

Código: Comparator reverso

Comparators podem definir qualquer regra, como a ordem decrescente mostrada aqui.

public class Main {
  public static void main(String[] args) {
    java.util.List<Integer> nums = new java.util.ArrayList<>();
    nums.add(5); nums.add(1); nums.add(3);

    java.util.Comparator<Integer> desc = (a,b) -> b - a;
    java.util.Collections.sort(nums, desc);
    System.out.println(nums); // [5,3,1]
  }
}

Verificação: Comparable versus Comparator

Verificação rápida: qual é a principal diferença entre Comparable e Comparator?

Recapitulação

Recapitulação: Comparable define uma ordem natural dentro da classe. Comparator é separado e pode criar várias estratégias de ordenação.

Perguntas Frequentes

A aula “Comparable e Comparator” é grátis?

Sim — o texto completo de “Comparable e Comparator” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Java Academy, atualize para CoddyKit PRO. O curso de Java Academy inclui 3 aulas no total.

O que vou aprender em “Comparable e Comparator”?

Aprenda a diferença entre Comparable e Comparator para ordenação personalizada. Pratique compareTo e Comparators externos. Você pratica Java Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Java Academy?

Nenhuma experiência prévia é necessária. Java Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 3.

Quanto tempo leva a aula “Comparable e Comparator”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Java Academy?

Sim. Cada aula de Java Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Mapas e contagem de frequências
  2. Comparable e Comparator
  3. Ordenação e pesquisa com Collections
← Voltar para Java Academy