Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

unmodifiableSet

não entendi o uso. Pode me explicar por favor?

1 resposta
solução!

Olá Luca!

A função unmodifiableSet da classe Collections é usada para criar uma visualização imutável de um Set. Isso significa que, uma vez criado, esse Set não poderá ser modificado, ou seja, não será possível adicionar, remover ou modificar elementos nele.

No contexto do curso Java Collections: Dominando Listas, Sets e Mapas, a função unmodifiableSet é utilizada para retornar uma visualização imutável do Set de alunos da classe Curso. Isso é feito no método getAlunos, que retorna o Set de alunos, mas de maneira não modificável.

Essa abordagem é útil quando você deseja fornecer acesso aos elementos de um Set, mas não quer permitir que eles sejam alterados. Por exemplo, se você tiver uma classe Curso e quiser fornecer uma maneira de acessar os alunos matriculados, mas não permitir que novos alunos sejam adicionados ou que alunos existentes sejam removidos, você pode usar unmodifiableSet para garantir isso.

Aqui está um exemplo prático de como usar unmodifiableSet:

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

public class Curso {
    private Set<Aluno> alunos = new HashSet<>();

    public void matricula(Aluno aluno) {
        this.alunos.add(aluno);
    }

    public Set<Aluno> getAlunos() {
        return Collections.unmodifiableSet(alunos);
    }
}

public class Main {
    public static void main(String[] args) {
        Curso curso = new Curso();
        Aluno aluno1 = new Aluno("João");
        Aluno aluno2 = new Aluno("Maria");

        curso.matricula(aluno1);
        curso.matricula(aluno2);

        Set<Aluno> alunos = curso.getAlunos();

        // Tentativa de adicionar um novo aluno ao Set imutável
        alunos.add(new Aluno("Pedro")); // Isso lançará uma exceção UnsupportedOperationException
    }
}

Neste exemplo, o Set de alunos retornado pelo método getAlunos é imutável, então qualquer tentativa de adicionar um novo aluno resultará em uma exceção UnsupportedOperationException.

Espero ter ajudado a esclarecer o uso da função unmodifiableSet! Se tiver mais alguma dúvida, é só me dizer. Bons estudos!

Espero ter ajudado e bons estudos!