Подтвердить что ты не робот

Make ArrayList Только для чтения

В Java, как вы можете сделать ArrayList только для чтения (чтобы никто не мог добавлять элементы, редактировать или удалять элементы) после инициализации?

4b9b3361

Ответ 1

Передайте ArrayList в Collections.unmodifiableList(). Он возвращает немодифицируемое представление указанного списка. Используйте этот возвращенный список и никогда не используйте оригинальный ArrayList.

Ответ 2

Передайте объект списка Collections.unmodifiableList(). Ниже приведен пример примера.

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

Ответ 3

Вы действительно хотите использовать ArrayList в этом случае?

Возможно, было бы лучше сначала заполнить ArrayList всей вашей информацией, а затем преобразовать ArrayList в конечный массив, когда программа Java инициализирует

Ответ 4

Отметьте Коллекции Google, и для ваших нужд посмотрите на ImmutableList. Но все, что там стоит посмотреть.

Ответ 5

Передайте объект коллекции его эквивалентной немодифицируемой функции класса Collections следующий код показывает использование 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);
    }

}

так же, как вы можете создавать другие коллекции, не поддающиеся изменению,

  • Collections.unmodifiableMap(карта);
  • Collections.unmodifiableSet(комплект);