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

Java에서 컬렉션을 읽기 전용으로 만드는 방법은 무엇입니까?

<시간/>

java.util의 컬렉션 클래스 컬렉션에서만 작동하는 패키지 메서드 이 메서드는 다형성 알고리즘과 관련된 다양한 추가 작업을 제공합니다.

이 클래스는 아래와 같이 unmodifiable() 메소드의 다양한 변형을 제공합니다 -

Sr.No 방법 및 설명
1 정적 컬렉션 unmodifiableCollection(컬렉션 c)
이 메서드는 컬렉션 개체를 허용하고 지정된 컬렉션의 수정할 수 없는 보기를 반환합니다.
2 정적 목록 수정 불가능 목록(목록 목록)
이 메소드는 List 인터페이스의 객체를 받아들이고 수정 불가능한 뷰를 반환합니다.
3 정적 Map unmodifiableMap(Map m)
이 메소드는 Map 인터페이스의 객체를 받아들이고 수정 불가능한 뷰를 반환합니다.
4 정적 Set unmodifiableSet(Set s)
이 메서드는 Set 인터페이스의 객체를 받아들이고 수정 불가능한 뷰를 반환합니다.
5 정적 SortedMap unmodifiableSortedMap(SortedMap m)
이 메소드는 SortedMap 인터페이스의 객체를 받아들이고 수정 불가능한 뷰를 반환합니다.
6 정적 SortedSet unmodifiableSortedSet(SortedSet s)
이 메서드는 SortedSet 인터페이스의 개체를 허용하고 지정된 정렬된 집합의 수정할 수 없는 보기를 반환합니다.

컬렉션에 대한 메서드 중 하나를 사용하여 컬렉션 개체를 읽기 전용으로 만들 수 있습니다.

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

import java.util.Collection;
import java.util.Collections;
import java.util.Vector;
public class CollectionReadOnly {
   public static void main(String[] args) {
      //Instantiating an ArrayList object
      Vector<String> vector = new Vector<String>();
      vector.add("JavaFx");
      vector.add("Java");
      vector.add("WebGL");
      vector.add("OpenCV");
      System.out.println(vector);
      Collection<String> immutableVector = Collections.unmodifiableCollection(vector);
      System.out.println("Vector converted to read only "+immutableVector);
      immutableVector.add("CoffeeScript");
   }
}

예외

[JavaFx, Java, WebGL, OpenCV]
Array list converted to read only [JavaFx, Java, WebGL, OpenCV]
Exception in thread "main" java.lang.UnsupportedOperationException
   at java.util.Collections$UnmodifiableCollection.add(Unknown Source)
   at September19.CollectionReadOnly.main(CollectionReadOnly.java:20)

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