curso-dio-intro-collections icon indicating copy to clipboard operation
curso-dio-intro-collections copied to clipboard

Dúvida sobre Comparable e Comparator em List

Open karenbiblio opened this issue 1 year ago • 1 comments

Olá Camila, tudo bem? Obrigada pelas aulas ❤️

Na aula de Lists - Ordenação de elementos em uma coleção List - exemplos dos Gatos:

Você criou um "Comparable Nome" e depois criou "Comparator para Cor e Idade". Você dizia na aula que: "como criou um Comparable para Nome, para os outros tinha que ser Comparator". Significa que, só pode haver 1 Comparable enquanto pode haver vários Comparators num mesmo programa?

Agradeço

karenbiblio avatar Jul 19 '22 17:07 karenbiblio

Oi, Karen. Tudo bem? (: Primeiramente muito obrigada pelo feedback. Fico muito feliz em saber que você está gostando das aulas, <3 Isso 1 Comparable e diversos Comparators para uma classe.

O Comparable permite que você determine uma regra de comparação para a classe que implementar essa interface, como uma espécie de regra padrão ou regra oficial. Vamos ver os exemplos abaixo, com as classes String e Integer. Essas classes que usamos todos os dias e já são do próprio Java:

  • A classe String ela implementa o Comparable e por default organizamos as Strings por ordem alfabética. 2022-07-19_15-35
  • Da mesma forma acontece com o Integer. A classe Integer implementa a interface Comparable e conseguimos ordenar por ordem numérica. 2022-07-19_15-34

E nós temos a nossa classe Gato e queremos dizer que por padrão, quando precisamos comparar objetos do tipo Gato, fazemos isso pelo atributo nome (poderia ser por qualquer outro atributo). Para isso, basta implementar a interface Comparable e sobreescrever o método compareTo e criar a regra de comparação:

2022-07-19_15-40

Mas vamos supor que eu queira sair dessa "regra padrão". Além de comparar por nome, quero comparar de outras formas, mas quero deixar o nome como padrão e eventualmente escolher outras regras. Aí, criamos nossas prórias classes comparadoras, que vão extender a classe Comparator fazendo cada uma a sua própria regra.

2022-07-19_15-43

Ficou mais claro agora?

Mais deixa eu te contar uma coisa boa: No final desse curso, vamos conhecer as Streams API. Essa API tem uma forma super fácil de fazer essas comparações sem precisar criar classes várias para isso. Porém é importante você ter esses conceitos de Comparator X Comparable na ponta da língua que vai te ajudar bastante quando chegarmos lá!

Se ainda não ficou claro, pode falar que vamos resolvendo juntas. (:

cami-la avatar Jul 19 '22 18:07 cami-la