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

ArrayListをJavaで読み取り専用にする方法は?


unmodizableList() java.util.Collectionsのメソッド classは、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]

Listオブジェクトの読み取り専用ビューを取得すると、その内容を変更することはできません。つまり、 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)

  1. JTextFieldがJavaで数値のみを受け入れるようにするにはどうすればよいですか?

    デフォルトでは、 JTextField 数字を許可できます 、文字 、および特別 キャラクター 。 JTextFieldに入力されたユーザー入力の検証 特に入力文字列をintなどの数値に変換する必要がある場合は、難しい場合があります。 次の例では、 JTextField 数値のみを入力できます 。 例 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JTextFieldValidation extends JFrame {    JTextField tf;

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

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