Comparável vs Comparador: Diferença entre Comparável e Comparador

Publicados: 2020-12-30

Índice

Comparável e Comparador: Uma Visão Geral

Comparável e comparador são interfaces na linguagem de programação Java para determinar o comportamento em que as classes serão implementadas. Enquanto Comparable é usado em objetos que são naturalmente ordenados, a interface Comparator implementa a classificação levando em consideração os atributos de um objeto. Além disso, a classificação Comparator leva em consideração objetos de duas classes diferentes e Comparable compara objetos usando a referência “this”.

Agora que estabelecemos o princípio básico sobre o qual ambas as interfaces funcionam, vejamos as diferenças entre as duas.

Diferença entre comparável e comparador

Método de classificação

Comparável

Ele usa a função compareTo() para classificação. Este é o único método presente na interface de classificação Comparable.

compareTo(Object O) recebe como argumento um objeto e o compara com outro do mesmo tipo. Se um objeto for uma string, você só poderá compará-lo com outro objeto do mesmo tipo. O mesmo é o caso com um objeto int e assim por diante. compareTo() retorna um valor inteiro negativo, positivo ou zero com base no resultado da classificação.

Comparador

Existem dois métodos para classificar elementos no Comparator: compare() e equals().

compare(Object O1, Object O2) leva em consideração dois argumentos como entrada e fornece a saída desejada. Ele retorna um inteiro para indicar como o primeiro argumento combina com o segundo.

  • Se O1 for menor que O2, ele retornará um número inteiro negativo.
  • Se O1 for maior que O2, retornará um inteiro positivo.
  • Se O1 for igual a O2, retorna 0.

equals(Object) leva em conta um objeto como entrada e o compara com o comparador. Retorna True se o Objeto for igual ao Comparador. Também garante que a ordem não seja alterada.

Pacote usado

Comparável

Ele existe no pacote java.lang do Java.

Comparador

Ele existe no pacote java.util do Java.

Encomenda e Classe

Comparável

  • Ele leva em consideração objetos que seguem a ordem natural, ou seja, tendem a se classificar. Por exemplo, ordem alfabética ou ordem numérica no caso de nomes, preço, salário, número de rolo, idade, etc.
  • Também é importante que ambos os objetos pertençam à mesma classe.
  • A interface comparável compara a referência “this” com o objeto especificado.
  • A classificação usando Comparable afeta a classe real.

Comparador

  • Essa interface é usada principalmente para classificar atributos de objetos especificados. Eles não precisam ter uma ordem natural; pode ser personalizado.
  • A lógica de classificação deve estar em classes separadas para comparar os atributos dos objetos das duas classes em consideração.
  • A classe real permanece inalterada.

Sequências e Coleções

Comparável

  • Ele suporta apenas sequências de classificação única. Isso implica que você só pode considerar um elemento ou atributo de uma coleção, como um número de rolo, idade ou classificação.
  • Para ordenar uma coleção de objetos, arrays ou lista, você pode usar Collection. sort(Lista) ou Arrays. classificar(Lista). Isso trará os objetos em sua ordem natural .

Comparador

  • Ele suporta várias sequências de classificação. Isso implica que você pode considerar vários elementos ou atributos de uma coleção, como número de rolo, idade e classificação.
  • Você pode usar um collection.sort(list, comparador) para classificar uma coleção.

Aqui está um resumo de todas as diferenças entre Comparável e Comparador

Comparável Comparador
Pacote
Java.lang Java.util
Método de classificação
comparado a() comparar()
Encomenda
Ordenação Natural Pedido personalizado
Tipo de objeto
Objetos em comparação devem ser do mesmo tipo Objetos de diferentes classes são considerados
Efeito na classe
A classe é modificada Não afeta a classe
Sequência de classificação
Sequência de Ordenação Única Sequência de classificação múltipla

Inscreva-se em cursos de desenvolvimento de software das melhores universidades do mundo. Ganhe Programas PG Executivos, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.

Coisas para manter em mente ao usar o comparável e o comparador em Java

  • Interface comparável é aquela a ser escolhida se você estiver vendendo para realizar uma comparação padrão para uma classe específica.
  • Comparador permite o uso de lambda.
  • Você pode usar o método compareTo() para implementar Comparator e Comparable.
  • A interface do comparador é recomendada se você estiver buscando flexibilidade na classificação

Conclusão

Na maioria dos cenários da vida real, quando classificamos, geralmente temos uma variedade de parâmetros em mente. Além disso, como usar resultados comparáveis ​​na classificação padrão e não pode ser alterado dinamicamente, é menos prático que o Comparator, que permite personalizar e escolher entre diferentes métodos de classificação para atender às suas necessidades. Por esta razão, o Comparator encontra mais aplicações práticas do que o Comparable.

Leia: Algum projeto Java interessante para conferir

Se você estiver interessado em aprender mais sobre Java, desenvolvimento de pilha completa, confira o Programa PG Executivo do upGrad & IIIT-B em Desenvolvimento de Software de pilha completa, projetado para profissionais que trabalham e oferece mais de 500 horas de treinamento rigoroso, mais de 9 projetos, e atribuições, status de ex-alunos do IIIT-B, projetos práticos práticos e assistência de trabalho com as principais empresas.

O que são interfaces em linguagens de programação?

Aprender Java é fácil?

Java introduz um paradigma de programação orientado a objetos, permitindo que até mesmo os desenvolvedores Java mais inexperientes pensem e criem programas como um desenvolvedor experiente. Java originou-se das linguagens de programação C e C++ que também são amplamente utilizadas hoje. Embora o Java tenha algumas semelhanças com C e C++ em termos de funcionalidade, ele se tornou uma linguagem muito mais amigável. Como a programação orientada a objetos simplifica a manutenção e a alteração do código existente, mesmo codificadores iniciantes podem começar a trabalhar em projetos corporativos. Novos desenvolvedores são menos propensos a encontrar falhas de tempo de execução imprevistas, pois o Java é verificado quanto a erros antes da execução. Java obriga os programadores a especificar corretamente todos os elementos de código, reduzindo as chances de erros à medida que os aplicativos crescem.

Por que a classificação é necessária em Java?

A ordenação refere-se a um conjunto de técnicas para reorganizar os lugares dos elementos em uma matriz, de modo que estejam todos em ordem crescente ou decrescente. Um algoritmo de classificação decente também deve garantir que os elementos com o mesmo valor permaneçam na matriz classificada na mesma ordem. A classificação é necessária para entender as estruturas de dados e algoritmos em profundidade. Java como linguagem de programação é excepcionalmente versátil e pode ser usado para implementar vários algoritmos de ordenação. A maioria desses algoritmos é bastante versátil e pode ser implementada de maneira recursiva e iterativa.