В Java, как вы можете сделать ArrayList
только для чтения (чтобы никто не мог добавлять элементы, редактировать или удалять элементы) после инициализации?
Make ArrayList Только для чтения
Ответ 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(комплект);