Como fazer uma coleção somente leitura em Java?
A classe Collections é usada como uma estrutura de dados para gerenciar os dados. Podemos adicionar, remover, buscar e atualizar os dados na lista , conjunto ou objeto do mapa . A classe de coleções tem métodos padrão para essas operações. Podemos usar esses métodos facilmente. Por padrão, quando criamos um objeto da classe Coleções, ele será Legível e Gravável.
Coleção somente leitura: para tornar o objeto de coleções somente leitura, precisamos restringir um objeto para adicionar, remover ou atualizar dados dele. A única operação é buscar os dados.
Java tem métodos diferentes para diferentes tipos de coleção como unmodifiableCollection() , unmodifiableMap() , ununmodifiableSet() etc. Todos os métodos são predefinidos na classe java.util.Collections. O unmodifiableCollection() é um método genérico para fazer uma coleção somente leitura. Precisamos fazer a referência da classe Coleções para isso. Se tivermos um objeto de Set Interface, podemos usar ununmodifiableSet() para tornar somente leitura.
Exemplo 1: o código abaixo mostra como tornar uma lista inalterável.
// Java Program to make Collections Read-Only
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class GFG {
public static void main(String[] args)
{
// List of Integer
List<Integer> numbers = new ArrayList<>();
// List have 1 to 10 numbers
for (int i = 1; i <= 10; i++) {
numbers.add(i);
}
// Iterate on the stream of integers and
// print them
numbers.stream().forEach(System.out::print);
// Now we are adding one more element
numbers.add(11);
// Removing element from the list
numbers.remove(8);
// Updating List¶
numbers.set(4, 4);
System.out.println(
"\nAfter Performing Some Operations");
numbers.stream().forEach(System.out::print);
System.out.println(
"\nHence By default Collections object is Readable and Writable");
// Now making Read-Only List
// Using unmodifiableList() method.
try {
numbers = Collections.unmodifiableList(numbers);
// This line will generate an Exception
numbers.remove(11);
}
catch (UnsupportedOperationException
unsupportedOperationException) {
System.out.println(
"Exceptions is "
+ unsupportedOperationException);
}
finally {
System.out.println(numbers.get(3));
System.out.println(
"Now list is only Read-Only");
}
}
}
12345678910 Depois de realizar algumas operações 123446781011 Portanto, por padrão, o objeto de coleções é legível e gravável As exceções são java.lang.UnsupportedOperationException 4 Agora a lista é somente leitura
Acima está um exemplo de como fazer uma lista somente leitura. Antes de fazer somente leitura, podemos realizar operações CRUD, mas depois de fazer a lista somente leitura, os métodos set(), add() e remove() irão gerar exceções. Agora podemos apenas buscar os dados da lista.
Exemplo 2: o código abaixo mostra como tornar um Conjunto não modificável.
// Java Program to make
// Set Interface Object Read-Only
import java.util.Set;
import java.util.HashSet;
import java.util.Collections;
class GFG {
public static void main(String[] args)
{
// Set of Integer
Set<Integer> numbers = new HashSet<Integer>();
// Set have 1 to 10 numbers
for (int i = 1; i <= 5; i++) {
numbers.add(i);
}
// print the integers
numbers.stream().forEach(System.out::print);
// Removing element from the list
numbers.remove(5);
System.out.println("\nAfter Performing Operation");
numbers.stream().forEach(System.out::print);
System.out.println(
"\nSet is also By Default Readable and Writable");
// Now making Read-Only Set
// Using unmodifiableSet() method.
try {
numbers = Collections.unmodifiableSet(numbers);
// This line will generate an Exception
numbers.remove(4);
}
catch (UnsupportedOperationException
unsupportedOperationException) {
System.out.println(
"Exceptions is "
+ unsupportedOperationException);
}
finally {
System.out.println(numbers.contains(3));
System.out.println("Now Set is Read-Only");
}
}
}
12345 Depois de realizar a operação 1234 Definir também é por padrão legível e gravável As exceções são java.lang.UnsupportedOperationException verdade Agora definido é somente leitura
No exemplo acima, definimos Definir como somente leitura. Podemos tornar o objeto de coleções somente leitura usando unmodifiableCollection() e para tornar o objeto somente leitura de mapa, podemos usar o método unmodifiableMap() .
Método | Descrição |
---|---|
static <T> Collection <T> unmodifiableCollection (Collection <? extends T> c) | Este método aceita qualquer um dos objetos da coleção e retorna uma visão não modificável da coleção especificada. |
static <T> List <T> unmodifiableList (List <? extends T> lista) | Este método aceita um objeto da interface List e retorna uma visão não modificável dele. |
static <K, V> Map <K, V> unmodifiableMap (Map <? estende K ,? estende V> m) | Este método aceita um objeto da interface Map e retorna uma visão não modificável dele. |
static <T> Set <T> unmodifiableSet (Set <? extends T> s) | Este método aceita um objeto da interface Set e retorna uma visão não modificável dele. |
static <K, V> SortedMap <K, V> unmodifiableSortedMap (SortedMap <K ,? extends V> m) | Este método aceita um objeto da interface SortedMap e retorna uma visão não modificável dele. |
static <T> SortedSet <T> unmodifiableSortedSet (SortedSet <T> s) | Este método aceita um objeto da interface SortedSet e retorna uma visão não modificável do conjunto classificado especificado. |
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva