В Java, как вы можете сделать ArrayList доступным только для чтения (чтобы никто не мог добавлять элементы, редактировать или удалять элементы) после инициализации?
ArrayList
Передайте ArrayList в Collections.unmodifiableList(). Возвращает неизменяемое представление указанного списка. Используйте только это возвращенное List, а не оригинальное ArrayList.
Collections.unmodifiableList()
List
Передать объект списка в 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."); } }
Передайте объект коллекции его эквивалентной неизменяемой функции класса Collections. Следующий код показывает использование unmodifiableList
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(map)
Collections.unmodifiableSet(set)
Вы уверены, что хотите использовать ArrayList в этом случае?
Может быть, было бы лучше сначала заполнить ArrayList всей вашей информацией, а затем преобразовать ArrayList в окончательный массив при инициализации Java-программы.