En Java, comment pouvez-vous rendre un ArrayList
en lecture seule (afin que personne ne puisse ajouter, modifier ou supprimer des éléments) après l'initialisation?
Passez le ArrayList
dans Collections.unmodifiableList()
. Il renvoie une vue non modifiable de la liste spécifiée. Utilisez uniquement cette valeur renvoyée List
, et jamais l'original ArrayList
.
Passez l'objet liste à Collections.unmodifiableList()
. Voir l'exemple ci-dessous.
import Java.util.*;
public class CollDemo
{
public static void main(String[] argv) throws Exception
{
List stuff = Arrays.asList(new String[] { "a", "b" });
List list = new ArrayList(stuff);
list = Collections.unmodifiableList(list);
Set set = new HashSet(stuff);
set = Collections.unmodifiableSet(set);
Map map = new HashMap();
map = Collections.unmodifiableMap(map);
System.out.println("Collection is read-only now.");
}
}
Passez l'objet de collection à sa fonction non modifiable équivalente de la classe Collections
. Le code suivant montre l'utilisation de unmodifiableList
import Java.util.ArrayList;
import Java.util.Collections;
import Java.util.List;
public class Temp {
public static void main(String[] args) {
List<Integer> objList = new ArrayList<Integer>();
objList.add(4);
objList.add(5);
objList.add(6);
objList.add(7);
objList = Collections.unmodifiableList(objList);
System.out.println("List contents " + objList);
try {
objList.add(9);
} catch(UnsupportedOperationException e) {
e.printStackTrace();
System.out.println("Exception occured");
}
System.out.println("List contents " + objList);
}
}
de la même manière, vous pouvez également créer d'autres collections non modifiables
Voulez-vous vraiment utiliser un ArrayList
dans ce cas?
Il serait peut-être préférable de remplir d'abord un ArrayList
avec toutes vos informations, puis de convertir le ArrayList
en un tableau final lors de l'initialisation du programme Java Java).