collections-java-api-2023 icon indicating copy to clipboard operation
collections-java-api-2023 copied to clipboard

Desafio de ordenação com Map

Open diego-bernardesb opened this issue 2 years ago • 3 comments

Oi tudo bem, realizando o desfio de ordenação do com Map me deparei com um erro na hora de executar o método de remover livro, essa foi a solução que consegui chegar, em vez de criar uma variável do obj Livro, troquei para uma String, e em vez de passar o .getValue() passo o .getKey(), pois a IDE acabou dando um alerta dizendo que não conseguia encontra a key para realizar a remoção

Codigo que não funcionou:

image

Codigo funcionou e removeu :

image

diego-bernardesb avatar Aug 22 '23 18:08 diego-bernardesb

Show!! Ficou ótima sua solução. Parabéns!

Acabei de atualizar o repositório e resolvi este método da seguinte forma:

  public void removerLivro(String titulo) {
    List<String> chavesRemover = new ArrayList<>();
    for (Map.Entry<String, Livro> entry : livros.entrySet()) {
      if (entry.getValue().getTitulo().equalsIgnoreCase(titulo)) {
        chavesRemover.add(entry.getKey());
      }
    }
    for (String chave : chavesRemover) {
      livros.remove(chave);
    }
  }

Fiz dessa forma, porque talvez tenha livros com chave diferentes, porém o nome do livro pode ser igual. Vê se você entendeu minha lógica.

Qualquer dúvida, fico à disposição! (:

cami-la avatar Aug 28 '23 20:08 cami-la

Sim, ficou bem tranquilo de entender acabou que foi realizada mas um for pra dar uma segurança de remover apenas o livro correto de acordo com a chave, ficou muito bom

diego-bernardesb avatar Aug 28 '23 21:08 diego-bernardesb

Com Stream API fica ainda mais simples.

  public void removerLivro(String titulo) {
    livros.values()
        .removeIf(livro -> livro.getTitulo().equalsIgnoreCase(titulo));
  }

No próximo curso comigo aqui na DIO você vai aprender sobre Stream e como facilita na manipulaçao das Collections.

cami-la avatar Aug 28 '23 21:08 cami-la