web-dev-qa-db-fra.com

make ArrayList Lecture seule

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?

56
gmhk

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.

108
Mark Pope

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.");
    }
}
4
Arunkumar Papena

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

1
Amar Magar

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).

1
Jama22