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
1.08k stars 793 forks source link

Erro ao remover um livro pela sua chave. #95

Open IgorTudisco opened 3 months ago

IgorTudisco commented 3 months ago

Caminho => src/main/java/map/Ordenacao/LivrariaOnline.java

Não entendi o método de remover, se puder me explicar melhor eu agradeço.

O meu estava dando erro e quando fui olhar o seu, eu não entendi.

O meu:

 public void removerLivro(String titulo){
        if(!livrariaMap.isEmpty()){            
            for(Livro l : livrariaMap.values()){

                if(l.getTitulo() == titulo){
                    livrariaMap.remove(l);
                    break;
                }
            }

        }
    }

O Seu:

 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);
    }
  }

https://github.com/IgorTudisco/DIO---Trilha-Java-B-sico/blob/main/Conhecendo_Collections_Java/Map/Livraria/src/livraria/operacao/LivrariaOnline.java

IgorTudisco commented 3 months ago

Eu mudei para algo parecido com o seu e deu certo, mas ainda não entendi.

Oliveira2023 commented 1 month ago

Entendi assim Igor: Primeiro foi criado uma lista que vai conter a lista de chaves que serão excluidas, ela cria esta lista porque pode ter mais de 1 chave com o mesmo titulo, neste caso vai adicionando estas chaves nesta lista (chavesRemover) No 'for' itera sobre as entradas do Map 'livros' -(livros.entrySet) e então verifica se (if) o titulo do map é equivalente ao argumento titulo neste caso ignorando se é maiusculo ou minusculo, e se for igual adiciona a chave deste livro a lista para remover. chavesRemover.add(entry.getKey()) Depois no final itera com 'for' sobre esta lista de chaves para remover e com o metodo remove vai excluindo as chaves no livro - livros.remove(chave)