image

Bootcamps ilimitados + curso de inglês para sempre

80
%OFF
Article image
Valdemar Taborda
Valdemar Taborda18/08/2023 09:57
Compartilhe
Microsoft 50 Anos - Prompts InteligentesRecomendados para vocêMicrosoft 50 Anos - Prompts Inteligentes

Praticando Interface Set & TreeSet Para Compreender melhor

  • #Java

Bom Dia, segue explicação das Interfaces e testes com Set e TreeSet.

Set é apenas uma interface. A ordem depende da implementação.

HashSet não tem garantia nenhuma de ordem. Na prática é aleatório.

LinkedHashSet mantém a ordem na qual os elementos são inseridos.

TreeSet ordena os elementos de acordo com a ordenação natural (crescente, alfabética, etc). É possível passar um Comparator no construtor para especificar como ele deve ordenar caso a ordenação natural não exista ou não seja a desejada

image

image

Compartilhe
Recomendados para você
Deal - Spring Boot e Angular (17+)
Cognizant - Arquitetura com Spring Boot e Cloud
Claro - Java com Spring Boot
Comentários (2)
Valdemar Taborda
Valdemar Taborda - 18/08/2023 11:06

Pelo que entendi segue explicação:

Comparable altera classe que será posto,

int = "Compara esse objeto com o objeto especificado para a ordem"


Comparator Devera ser colocado fora da classe como nova classe.

int = "Compara seus dois argumentos para ordem",

boolean = "Indica se algum outro Objeto é "igual a" este comparador"



Referencias


Comparable X Comparator

Comparable

  • Comparable fornece uma única sequência de ordenação. Em outras palavras, podemos ordenar a coleção com base em um único elemento, como id, nome e preço.
  • Comparable afeta a classe original, ou seja, a classe atual é modificada.
  • Comparable fornece o método compareTo() para ordenar elementos.
  • Comparable está presente no pacote java.lang.
  • Podemos ordenar os elementos da lista do tipo Comparable usando o método Collections.sort(List).

Comparator

  • Comparator fornece o método compare() para ordenar elementos.
  • Comparator fornece múltiplas sequências de ordenação. Em outras palavras, podemos ordenar a coleção com base em múltiplos elementos, como id, nome, preço, etc.
  • Comparator não afeta a classe original, ou seja, a classe atual não é modificada.
  • Um Comparator está presente no pacote java.util.
  • Podemos ordenar os elementos da lista do tipo Comparator usando o método Collections.sort(List, Comparator).

Collections

  • A classe Collections é uma classe utilitária do Java para operações comuns em coleções.
  • Ela fornece métodos para ordenação, busca, manipulação e sincronização de coleções.
  • O método sort() é usado para ordenar uma lista em ordem ascendente.
  • O método sort() em conjunto com Collections.reverseOrder() permite ordenar em ordem descendente.
package main.java.comparableXcomparator;

import java.util.Comparator;

// Uma classe 'Livro' que implementa Comparable
class Livro implements Comparable<Livro> {
  private String titulo;
  private String autor;
  private int ano;

  // Construtor
  public Livro(String ti, String au, int an) {
      this.titulo = ti;
      this.autor = au;
      this.ano = an;
  }

  // Usado para ordenar livros por ano
  public int compareTo(Livro l) {
      return titulo.compareTo(l.titulo);
  }

  // Métodos getters para acessar os dados privados
  public String getTitulo() {
      return titulo;
  }

  public String getAutor() {
      return autor;
  }

  public int getAno() {
      return ano;
  }
}

// Classe para comparar Livro por autor
class CompararAutor implements Comparator<Livro> {
  public int compare(Livro l1, Livro l2) {
      return l1.getAutor().compareTo(l2.getAutor());
  }
}

// Classe para comparar Livro por ano
class CompararAno implements Comparator<Livro> {
  public int compare(Livro l1, Livro l2) {
      if (l1.getAno() < l2.getAno())
          return -1;
      if (l1.getAno() > l2.getAno())
          return 1;
      else
          return 0;
  }
}

class CompararAnoAutorTitulo implements Comparator<Livro> {

  @Override
  public int compare(Livro l1, Livro l2) {
      int ano = Integer.compare(l1.getAno(), l2.getAno());
      if (ano != 0)
          return ano;
      int autor = l1.getAutor().compareTo(l2.getAutor());
      if (autor != 0)
          return autor;
      return l1.getTitulo().compareTo(l2.getTitulo());
  }
}



LB

Luís Barradas - 18/08/2023 10:22

Poderia dar um exemplo de implementação de um comparator?

Recomendados para vocêMicrosoft 50 Anos - Prompts Inteligentes