Java
 Computer >> コンピューター >  >> プログラミング >> Java

コレクションをJavaで読み取り専用にする方法は?


java.utilのCollectionsクラス コレクションでのみ機能するパッケージメソッドこれらのメソッドは、ポリモーフィックアルゴリズムを含むさまざまな追加操作を提供します。

このクラスは、以下に示すように、unmodizable()メソッドのさまざまなバリアントを提供します-

メソッドと説明
Sr.No
1 static Collection unmodizableCollection(Collection <?extends T> c)
このメソッドは、任意のコレクションオブジェクトを受け入れ、指定されたコレクションの変更不可能なビューを返します。
2 static List unmodizableList(List <?extends T> list)
このメソッドは、Listインターフェースのオブジェクトを受け入れ、そのオブジェクトの変更不可能なビューを返します。
3 static Map unmodizableMap(Map <?extends K、?extends V> m)
このメソッドは、Mapインターフェースのオブジェクトを受け入れ、そのオブジェクトの変更不可能なビューを返します。
4 static Set unmodizableSet(Set <?extends T> s)
このメソッドは、Setインターフェースのオブジェクトを受け入れ、そのオブジェクトの変更不可能なビューを返します。
5 static SortedMap unmodizableSortedMap(SortedMap m)
このメソッドは、SortedMapインターフェースのオブジェクトを受け入れ、そのオブジェクトの変更不可能なビューを返します。
6 static SortedSet unmodizableSortedSet(SortedSet s)
このメソッドは、SortedSetインターフェースのオブジェクトを受け入れ、指定されたソート済みセットの変更不可能なビューを返します。

コレクションに関するメソッドの1つを使用して、コレクションオブジェクトを読み取り専用にすることができます。

次の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)

Listオブジェクトの読み取り専用ビューを取得すると、その内容を変更することはできません。つまり、 UnsupportedOperationException を実行した場合、要素を直接追加または削除したり、Iteratorオブジェクトを使用したりすることはできません。 引き上げられます。


  1. Tkinterテキストウィジェットを読み取り専用にする方法は?

    Tkinterでは、テキストウィジェットを無効にしたい場合があります。これを実現するために、テキスト構成をDISABLEDとして設定できます。これにより、テキストウィジェットがフリーズし、読み取り専用になります。 この例では、テキストウィジェットと、ユーザーがテキストウィジェットを即座に無効化またはフリーズできるボタンを作成します。 例 #Import the library from tkinter import * #Create an instance of window win= Tk() #Set the geometry of the window win.geometry(

  2. Windows11/10でファイルまたはフォルダを非表示または読み取り専用にする方法

    この投稿では、ファイルやフォルダを非表示にする方法を紹介します。 または読み取り専用 Windows11/10PCの場合。ファイルを非表示として設定した場合 、人々はファイルやフォルダを見ることができなくなります。ファイルを読み取り専用に設定した場合 、人々はファイルを読むことはできますが、変更を加えて保存することはできません。 隠しファイルとは、「隠し」を含むすべてのファイルです。 プロパティの属性 オン。これらのファイルは通常、重要なオペレーティングシステム関連のファイルであるため、非表示になっています。これらのファイルは、変更または削除されないように、通常のビューから非表示になっ