4.10. コレクションと配列のやりとり
『目的』
コレクションと配列間のやりとりを簡潔に行いましょう。
『Before』
配列をCollectionに変換します。
リストを生成して、配列の要素をリストに繰り返し詰めます。
String[] strings = new String[100];
/* 配列 -> Collection */
List list = new ArrayList();
for (int i = 0; i < strings.length; i++) {
list.add(strings[i]);
}
もっと簡単な方法があります。
Collectionを配列に変換します。
配列を生成して、リストの要素を配列に繰り返し詰めます。
Collection values = new ArrayList();
values.add("1");
values.add("2");
int n = values.size();
/* Collection -> 配列 */
String[] strings = new String[n];
for (int i = 0; i < strings.length; i++) {
strings[i] = (String) values.get(i);
}
これも、もっと簡単な方法があります。
『After』
配列をCollectionに変換します。
String[] strings = new String[100];
/* 配列 -> Collection */
List list = Arrays.asList(strings);
forループは必要ありません。また、リストへの変更はそのまま配列に反映されます。
Collectionを配列に変換します。
Collection values = new ArrayList();
values.add("1");
values.add("2");
/* Collection -> 配列 */
String[] strings = (String[]) values.toArray(new String[values.size()]);
forループは必要ありません。
『まとめ』
Arrays.asListとCollection.toArrayの組み合わせが
配列ベースのAPIとコレクションベースのAPIの橋渡しをします。
ArraysやCollectionには便利なメソッドが色々用意されているので積極的に使いましょう。