Javaでは、初期化後にArrayList
を読み取り専用にする(どの要素も要素を追加、編集、または削除できないようにする)にはどうすればよいですか?
ArrayList
を Collections.unmodifiableList()
に渡します。指定されたリストの変更不可能なビューを返します。返されたList
のみを使用し、元のArrayList
は使用しないでください。
リストオブジェクトを 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
の使用を示しています
_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);
}
}
_
同様に、変更できない他のコレクションを作成することもできます
この場合、ArrayList
を使用してもよろしいですか?
最初にArrayList
にすべての情報を入力し、次にJavaプログラムが初期化されたときにArrayList
を最終的な配列に変換する方がよいでしょう。