não entendi o uso. Pode me explicar por favor?
não entendi o uso. Pode me explicar por favor?
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!