配列同士を結合して一つの配列にしたいと思ったことはありませんか?
複数の配列を一つにするための手法をいくつかわかりやすく短時間でご紹介いたします!
これを見れば今の自分の状況にあった結合方法がわかるとおもいます。
なお、Javaの記事については、こちらにまとめています。
配列の結合
通常の配列で結合を行う場合
System.arraycopyを用いる
System.arraycopyを用いることで連結したい配列の一つ目と連結先したい配列の二つ目を新しい配列にコピーしなおすという手法を取ります。
int[] foo = {10, 20, 30}; int[] bar = {5, 15, 25}; int len = foo.length + bar.length; int[] hoge = new int[len]; // まずhogeに先頭からfooの配列をコピーしていく System.arraycopy(foo, 0, hoge, 0, foo.length); // 次にhogeにbarをコピーしていく(コピー開始位置はfoo.lengthとする) System.arraycopy(bar, 0, hoge, foo.length, bar.length); for(int i = 0; i < len; i++) { System.out.printf("%d ", hoge[i]); }
実行結果
10 20 30 5 15 25
System.arraycopyについては下記記事でも解説を行っていますのでぜひご覧ください!
【5分でわかる】Javaで配列に値を追加する方法をわかりやすく解説
ArrayListで結合を行う場合
addAllを用いる
ArrayListで結合を行う場合はこのような書き方で実現できます。
ArrayList<Integer> list = new ArrayList<Integer>(); ArrayList<Integer> list2 = new ArrayList<Integer>(); list.add(10); list.add(20); list.add(30); list2.add(5); list2.add(15); list2.add(25); list.addAll(list2); for(int i = 0; i < list.size(); i++) { System.out.printf("%d ", list.get(i)); }
実行結果
10 20 30 5 15 25
配列についてもっと詳しく知りたい!
配列についてもっと知りたい方はこちらもご覧ください!
まとめ
いかがだったでしょうか。
通常の配列では結合を行うのには向いていないためコピーを行う形で結合しなければなりません。
それに対してArrayListを用いる方法ではaddAllメソッドを呼び出すだけで済むのでとても簡単ですね。
特に問題がない場合は極力ArrayListを使うのがよいのではないでしょうか。