cami-la / collections-java-api-2023

Este repositório é referente ao curso "Collection Framework API Java" e é uma valiosa contribuição para a comunidade de desenvolvedores Java, fornecendo exemplos práticos e recursos educacionais relacionados à poderosa API de coleções da linguagem Java.
https://web.dio.me/course/conhecendo-collections-java/learning/c5d6f4e1-6d05-4eea-93d8-d292c708999f
875 stars 636 forks source link

Desafio de ordenação com Map #13

Open diego-bernardesb opened 11 months ago

diego-bernardesb commented 11 months ago

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

cami-la commented 10 months ago

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! (:

diego-bernardesb commented 10 months ago

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

cami-la commented 10 months ago

Com Stream APIfica 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.