String names[] = new String[]{"Avinash","Amol","John","Peter"};
java.util.List<String> namesList = Arrays.asList(names);
または
String names[] = new String[]{"Avinash","Amol","John","Peter"};
java.util.List<String> temp = Arrays.asList(names);
上記のステートメントは、入力配列にラッパーを追加します。そのため、add&removeなどのメソッドは、リスト参照オブジェクト 'namesList'には適用されません。
既存の配列/リストに要素を追加しようとすると、「スレッド "main"で例外 "java.lang.UnsupportedOperationException"が発生します。
上記の操作は読み取り専用または表示専用です。
リストオブジェクトで追加または削除操作を実行できません。だが
String names[] = new String[]{"Avinash","Amol","John","Peter"};
java.util.ArrayList<String> list1 = new ArrayList<>(Arrays.asList(names));
または
String names[] = new String[]{"Avinash","Amol","John","Peter"};
java.util.List<String> listObject = Arrays.asList(names);
java.util.ArrayList<String> list1 = new ArrayList<>(listObject);
上記のステートメントでは、ArrayListクラスの具象インスタンスを作成し、パラメーターとしてリストを渡しました。
この場合、両方のメソッドがArrayListクラスからのものであるため、メソッドadd&removeは正しく機能します。そのため、ここではUnSupportedOperationExceptionを取得しません。
Arraylistオブジェクトで行われた変更(arraylistの要素を追加または削除するメソッド)は、元のjava.util.Listオブジェクトに反映されません。
String names[] = new String[] {
"Avinash",
"Amol",
"John",
"Peter"
};
java.util.List < String > listObject = Arrays.asList(names);
java.util.ArrayList < String > list1 = new ArrayList < > (listObject);
for (String string: list1) {
System.out.print(" " + string);
}
list1.add("Alex"); //Added without any exception
list1.remove("Avinash"); //Added without any exception will not make any changes in original list in this case temp object.
for (String string: list1) {
System.out.print(" " + string);
}
String existingNames[] = new String[] {
"Avinash",
"Amol",
"John",
"Peter"
};
java.util.List < String > namesList = Arrays.asList(names);
namesList.add("Bob"); // UnsupportedOperationException occur
namesList.remove("Avinash"); //UnsupportedOperationException
Lists.newArrayList(ia)
最初のオプションと同様に、独立したコピーを作成します。それは単により一般的であり、見る方が良いです。