Arrays.asListは、配列をArrayListに変換
プリミティブ型(下記int)は配列として登録されるため要注意。
public static void main(String[] args) {
List<String> sl = Arrays.asList("a","b");
for(String s:sl) {
System.out.println(s);
}
String[] strarray = {"c","d"};
System.out.println("--------------------------");
sl = Arrays.asList(strarray);
for(String s:sl) {
System.out.println(s);
}
System.out.println("--------------------------");
List<Integer> li = Arrays.asList(1,2);
for(Integer i:li) {
System.out.println(i);
}
System.out.println("--------------------------");
int[] intarray = {3,4};
List<int[]> li2 = Arrays.asList(intarray);
for(int[] i:li2) {
System.out.println(i);
a
b
--------------------------
c
d
--------------------------
1
2
--------------------------
[I@15db9742
class typeを確認する。普通のArrayListではないことがわかる。
List<String> sl = Arrays.asList("a","b");
System.out.println(sl.getClass());
class java.util.Arrays$ArrayList
asListで作成したListはaddできない
public static void main(String[] args) {
List<String> sl = new ArrayList();
sl.add("a");
List<String> sl2 = Arrays.asList("a","b");
sl2.add("a"); //ここで下記の例外が発生
}
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at com.mycompany.mavenproject1.Outer.main(Outer.java:22)