make ArrayList Read only

En Java, comment créer un ArrayList lecture seule (pour que personne ne puisse append des éléments, 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 List renvoyée, et jamais la liste ArrayList origine.

    Transmettez l’object de liste à Collections.unmodifiableList() . Voir l’exemple ci-dessous.

     import java.util.*; public class CollDemo { public static void main(Ssortingng[] argv) throws Exception { List stuff = Arrays.asList(new Ssortingng[] { "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."); } } 

    Transmettez l’object de collection à sa fonction non modifiable équivalente de la classe Collections . Le code suivant montre l’utilisation de la liste unmodifiableList

     import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Temp { public static void main(Ssortingng[] args) { List objList = new ArrayList(); 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 façon, vous pouvez créer d’autres collections non modifiables aussi

    • Collections.unmodifiableMap(map)
    • Collections.unmodifiableSet(set)

    Êtes-vous sûr de vouloir utiliser une ArrayList dans ce cas?

    Il serait peut-être préférable de remplir d’abord une ArrayList avec toutes vos informations, puis de convertir ArrayList en un tableau final lors de l’initialisation du programme Java.