Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Collections - Exemplo Ordenação Set #3

Open
natan20200679 opened this issue Dec 17, 2021 · 5 comments
Open

Collections - Exemplo Ordenação Set #3

natan20200679 opened this issue Dec 17, 2021 · 5 comments

Comments

@natan20200679
Copy link

natan20200679 commented Dec 17, 2021

Oi Camila, boa tarde! Estou com dúvidas no Exemplo que resolveu sobre Set. Antes de dizer a dúvida, percebi que na linha 49 do seu código, você pede algo que já resolveu (Ordem natural por Tempo Episódio, o que é o mesmo que nos pediu, rsrs), e por isto achei interessante tentar executar a ordem por Nome.

A minha solução está colocada entre as linhas 44 e 54 (comentadas), no código https://github.com/natan20200679/Java/blob/master/Collections/src/Set/Exemplo_Ordenacao.java, e que não estão resolvidas porque não consegui resolver, rsrs. Tu podes me fornecer pelo menos alguma dica de solução?! Tentei resolver aproveitando as estruturas prontas no restante do código.

@cami-la
Copy link
Owner

cami-la commented Dec 20, 2021

Isso, falha minha. kkkk
Vou te mandar uma das formas mais que usamos no dia a dia para fazer essa ordenação:

System.out.println("\n-- Ordem aleatória --");
    Set<Serie> minhasSeriesOrdemAleatoria = new HashSet<>() {{
      add(new Serie("got", "fantasia", 60));
      add(new Serie("dark", "drama", 60));
      add(new Serie("that '70s show", "comédia", 25));
    }};
    minhasSeriesOrdemAleatoria.forEach(serie -> System.out.println(serie));

    System.out.println("\n-- Ordem Inserção --");
    Set<Serie> minhasSeriesOrdemInsercao = new LinkedHashSet<>() {{
      add(new Serie("got", "fantasia", 60));
      add(new Serie("dark", "drama", 60));
      add(new Serie("that '70s show", "comédia", 25));
    }};
    minhasSeriesOrdemInsercao.forEach(serie -> System.out.println(serie));

    System.out.println("\n-- Ordem Nome --");
    Set<Serie> minhasSeriesOrdemNome = minhasSeriesOrdemAleatoria;
    minhasSeriesOrdemNome
        .stream()
        .sorted(Comparator.comparing(Serie::getNome))
        .collect(Collectors.toList())
        .forEach(serie -> System.out.println(serie));

    System.out.println("\n-- Ordem Gênero --");
    Set<Serie> minhasSeriesGenero = minhasSeriesOrdemAleatoria;
    minhasSeriesGenero
        .stream()
        .sorted(Comparator.comparing(Serie::getGenero))
        .collect(Collectors.toList())
        .forEach(serie -> System.out.println(serie));

    System.out.println("\n-- Ordem Tempo de Episódio --");
    Set<Serie> minhasSeriesEpisodio = minhasSeriesOrdemAleatoria;
    minhasSeriesEpisodio
        .stream()
        .sorted(Comparator.comparing(Serie::getTempoEpisodio))
        .collect(Collectors.toList())
        .forEach(serie -> System.out.println(serie));

@natan20200679
Copy link
Author

natan20200679 commented Dec 20, 2021

Certo, mas e seu eu quiser manter a execução da ordenação Nome/Genero/TempoEpisodio que vc fez? Obg querida!

@cami-la
Copy link
Owner

cami-la commented Dec 20, 2021

Obg querida!

Por nada!

Certo, mas e seu eu quiser manter a execução da ordenação Nome/Genero/TempoEpisodio que vc fez? Obg querida!

Eita, acabei esquecendo:

System.out.println("\n-- Ordem Nome/Gênero/TempoEpisodio --");
    Set<Serie> minhasSeriesNomeGeneroTempoEpiodio = new HashSet<>() {{
      add(new Serie("got", "fantasia", 60));
      add(new Serie("dark", "drama", 60));
      add(new Serie("that '70s show", "comédia", 25));
    }};
    minhasSeriesNomeGeneroTempoEpiodio
        .stream()
        .sorted((s1, s2) -> {
          int nome = s1.getNome().compareToIgnoreCase(s2.getNome());
          if(nome != 0) return nome;

          int genero = s1.getGenero().compareToIgnoreCase(s2.getGenero());
          if (genero != 0) return genero;

          return Integer.compare(s1.getTempoEpisodio(), s2.getTempoEpisodio());
        })
        .collect(Collectors.toList())
        .forEach(serie -> System.out.println(serie));

  }

@natan20200679
Copy link
Author

Camila, comparando o Exemplo_Ordenacao com o ExercicioProposto2, posso concluir que o uso de getters e setters é opcional para quaisquer tipos de interface de lista?

@cami-la
Copy link
Owner

cami-la commented Dec 20, 2021

Nem sempre. Getters e setters não são obrigados. Vai depender do encapsulamento.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants