Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 ArrayList를 읽기 전용으로 만드는 방법은 무엇입니까?

<시간/>

unmodifiableList() java.util.Collections의 메소드 클래스는 List 인터페이스의 객체(해당 클래스를 구현하는 객체)를 받아들이고 주어진 객체의 수정 불가능한 형태를 반환합니다. 사용자는 획득한 목록에 대해 읽기 전용 액세스 권한만 있습니다.

다음 Java 프로그램은 ArrayList 객체를 생성하고 여기에 요소를 추가하고 읽기 전용 List 객체로 변환합니다.

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ArrayListReadOnly {
   public static void main(String[] args) {
      //Instantiating an ArrayList object
      ArrayList<String> list = new ArrayList<String>();
      list.add("JavaFx");
      list.add("Java");
      list.add("WebGL");
      list.add("OpenCV");
      System.out.println(list);
      //Converting the ArrayList to read only list
      List<String> myList = (List<String>) Collections.unmodifiableList(list);
      System.out.println("Array list converted to read only "+list);
   }
}

출력

[JavaFx, Java, WebGL, OpenCV]
Array list converted to read only [JavaFx, Java, WebGL, OpenCV]

목록 개체의 읽기 전용 보기를 검색한 후에는 그 내용을 수정할 수 없습니다. 즉, UnsupportedOperationException을 수행하는 경우 Iterator 개체를 사용하거나 직접 요소를 추가하거나 삭제할 수 없습니다. 올릴 것입니다.

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ArrayListReadOnly {
   public static void main(String[] args) {
      //Instantiating an ArrayList object
      ArrayList<String> list = new ArrayList<String>();
      list.add("JavaFx");
      list.add("Java");
      list.add("WebGL");
      list.add("OpenCV");
      System.out.println(list);
      //Converting the ArrayList to read only list
      List<String> myList = (List<String>) Collections.unmodifiableList(list);
      myList.add("CoffeeScript");
      System.out.println("Array list converted to read only "+myList);
   }
}

런타임 예외

[JavaFx, Java, WebGL, OpenCV]
Exception in thread "main" java.lang.UnsupportedOperationException
   at java.util.Collections$UnmodifiableCollection.add(Unknown Source)
   at SEPTEMBER.remaining.ArrayListReadOnly.main(ArrayListReadOnly.java:20)