【Java学習ノート】集合配列変換asListとtoArrayメソッドの使用

1457 ワード

集合配列変換asListとtoArrayメソッドの使用
集合と配列にはそれぞれ優位性がある.配列集合を相互変換するために,ここではArraysにおけるaslist()とArrayListにおけるtoArray()の方法といくつかの注意点を紹介する.
配列ダイバーシティはArraysのaslist()メソッドで使用されます.
import java.util.Arrays;
import java.util.List;

String[] arr = {"a","b","c"};
List list = Arrays.asList(arr);//     
System.out.println(list);

ここでの出力は[a,b,c]です.しかし,配列に対する集合の大きな特徴は長さが可変であることであるが,add法で要素を増やすことができるだろうか.
list.add("d");

このときプログラムはエラーを報告するので,配列を集合に変換した後は増分操作はできないが,インデックスで要素を検索することができる.またintタイプの配列回転集合を試してみましょう
int[] arr = {1,2,3,4,5};
List list = Arrays.asList(arr);
System.out.println(list);

我々が望む出力は[1,2,3,4,5]であるが,出力はアドレス値[[I@646007f4]であり,配列全体を1つのオブジェクトとしているため,配列転集合時にlistに渡されるのは一般的に参照データ型である.
Integer[] arr = {1,2,3,4,5};
List list = Arrays.asList(arr);
System.out.println(list);

このとき[1,2,3,4,5]が得られた.
集合回転配列はArrayListにおけるtoArray()メソッドを用いる
import java.util.ArrayList;
import java.util.List;

ArrayList list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
		
String[] arr = list.toArray(new String[0]);
for (String string : arr) {
	System.out.print(string);
}

String[0]に与えられる理由は、配列の長さが集合のsizeより小さい場合、変換された配列が自動的に集合のsizeになるからである