例えば、以下のような配列があったとします。
Integer[] numbers = {1, 2, 4, 8, 16};
これをArrayListにしたい場合、もしかしたらこのように書いてしまうのではないでしょうか。
ArrayList<Integer> nList = new ArrayList<Integer>();
for (int i=0 ; i < numbers.length ; i++) {
nList.add(numbers[i]);
}
ただし、もっと短く書けます。(Javaネットワークプログラミングの真髄コード片より)
List<Integer> nl = Arrays.asList(mumbers); ArrayList<Integer> nList = new ArrayList<Integer>(nl);
たった2行、しかも可読性もそう悪くはありません。 ListインターフェイスはCollectionを実装しているので、ArrayListの引数に与えることができるんですね。 しかも慣れれば、1行にまとめることもできます。
ArrayList < Integer > nList = new ArrayList < Integer > (Arrays.asList(numbers));
利点と欠点を挙げたいところですが、 後者についていえば、 配列の要素数が多くなれば、ArrayList#addで何度も追加するよりも、はるかに早い速度が得られるので利点はあるのですが、 欠点はないように思えます。