こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、12年目エンジニアです。
この記事では、 JavaでArrayListに指定したコレクションをすべて追加するArrayList.addAllメソッドについて
- ArrayList.addAllメソッドとは
- ArrayList.addAllメソッドを使うときの注意点
- ArrayList.addAllメソッドを使ったサンプルプログラム
と、丁寧に解説していきます。
前提条件:実行環境について
実行環境は以下の通りです。
OS | Windows10 |
---|---|
IntelliJ IDEAのエディション | Community(無料版) |
IntelliJ IDEAのバージョン | 2021.3.2 |
プロジェクト | Javaプロジェクト |
SDK | Oracle OpenJDK version17.0.2 |
Javaを動かすためにIntelliJ IDEAを使っています。
IntelliJ IDEAのインストールは、下の記事をご参考ください。
ArrayList.addAllメソッドとは
ArrayList.addAllメソッドとは、ArrayListに引数で指定されているコレクションをすべて追加して結果をbooleanで返すメソッドです。
addAllメソッド実行でArrayListが変更した場合はtrue、変わらなかった場合はfalseが返されます。
ArrayList.addAllメソッドを使うためには、
1 |
import java.util.ArrayList; |
をインポートする必要があります。
ArrayList.addAllメソッドは使い方が
- パターン1:インデックスを指定しない場合
- パターン2:インデックスを指定する場合
の合計2パターンあります。
それぞれ解説します。
パターン1:インデックスを指定しない場合
インデックスを指定しないでArrayList.addAllメソッドを使った場合、引数のコレクションはArrayListの最後に追加されます。
たとえば
1 2 3 4 |
ArrayList<String> sample = new ArrayList<>(); sample.add("test"); sample.add("hogehoge"); sample.add("test"); |
というArrayListがある、とします。
中身は
1 2 3 |
test hogehoge test |
です。
このArrayListに対して
1 2 3 4 |
ArrayList<String> addAll = new ArrayList<>(); addAll.add("fugafuga"); addAll.add("sample"); boolean result = sample.addAll(addAll); |
と実行した場合、変数sampleは
1 2 3 4 5 |
test hogehoge test fugafuga sample |
というArrayListになり、変数resultには
1 |
true |
が返されます。
パターン2:インデックスを指定する場合
インデックスを指定してArrayList.addAllメソッドを使った場合、指定したインデックスで引数のコレクションが挿入されます。
もし挿入された位置より後ろに要素が存在する場合、1つずつ後ろにずれます。
たとえばパターン1の解説で使った
1 2 3 4 |
ArrayList<String> sample = new ArrayList<>(); sample.add("test"); sample.add("hogehoge"); sample.add("test"); |
中身は
1 2 3 |
test hogehoge test |
というArrayListに対して
1 2 3 4 |
ArrayList<String> addAll = new ArrayList<>(); addAll.add("fugafuga"); addAll.add("sample"); boolean result = sample.addAll(1, addAll); |
と実行した場合、変数sampleは
1 2 3 4 5 |
test fugafuga sample hogehoge test |
と、1番目にコレクションが挿入され、元1番目の「hogehoge」は追加したコレクションの後ろにずれたArrayListになります。
変数resultには
1 |
true |
が返されます。
ArrayList.addAllメソッドを使うときの注意点
ArrayList.addAllメソッドを使うときの注意点として
- nullは追加できない
- ArrayListの要素数以内の数しか指定できない(パターン2限定)
があります。
の2点があります。
それぞれ解説します。
注意点その1:nullは追加できない
注意点その1のnullは追加できない、についてです。
ArrayList.addAllメソッドは、nullのコレクションは追加できません。
なのでたとえば
1 2 3 4 5 6 |
ArrayList<String> sample = new ArrayList<>(); sample.add("test"); sample.add("hogehoge"); sample.add("test"); ArrayList<String> nullArray = null; boolean result = sample.addAll(nullArray); |
とnullのコレクションをArrayList.addAllメソッドで追加しようとした場合、コンパイルは通るものの実行すると
1 |
Exception in thread "main" java.lang.NullPointerException |
という例外が発生します。
注意点その2:ArrayListの要素数以内の数しか指定できない(パターン2限定)
注意点その2のArrayListの要素数以内の数しか指定できない、についてです。
これは追加するインデックスも指定するパターン2限定です。
たとえば
1 2 3 4 5 6 7 8 9 |
ArrayList<String> sample = new ArrayList<>(); sample.add("test"); sample.add("hogehoge"); sample.add("test"); ArrayList<String> overArray = new ArrayList<>(); overArray.add("sample"); overArray.add("fugafuga"); boolean result = sample.addAll(10, overArray); |
と要素数より大きい数をArrayList.addAllメソッドに指定して実行すると
1 |
Exception in thread "main" java.lang.IndexOutOfBoundsException |
という例外が発生します。
負の数でも同様な例外が発生します。
では、次の章で実際に使ってみます。
ArrayList.addAllメソッドを解説するプログラムの概要
ArrayList.addAllメソッドを解説するプログラムでは、ArrayListを新規作成し
- インデックス指定なし
- インデックス指定あり
でそれぞれ要素を追加して、結果を表示させます。
解説で使うJavaプログラムは、Sampleプロジェクトのsampleパッケージ内にある、とします。
Javaサンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
package sample; import java.util.ArrayList; public class Sample { public static void main(String[] args) { System.out.println("■ArrayList.addAllメソッドサンプル"); System.out.println("・インデックスなしで追加"); ArrayList<String> fruitList = new ArrayList<>(); fruitList.add("リンゴ"); fruitList.add("オレンジ"); fruitList.add("ぶどう"); System.out.println("実行前のArrayList:" + fruitList); ArrayList<String> addList = new ArrayList<>(); addList.add("メロン"); addList.add("スイカ"); System.out.println("追加するArrayList:" + addList); boolean result1 = fruitList.addAll(addList); System.out.println("実行後のArrayList:" + fruitList); System.out.println("返り値:" + result1); System.out.println("・インデックスありで追加"); ArrayList<String> fishList = new ArrayList<>(); fishList.add("アジ"); fishList.add("カツオ"); fishList.add("サケ"); System.out.println("実行前のArrayList:" + fishList); ArrayList<String> addIndexList = new ArrayList<>(); addIndexList.add("マグロ"); addIndexList.add("ハマチ"); System.out.println("追加するArrayList:" + addIndexList); boolean result2 = fishList.addAll(2, addIndexList); System.out.println("実行後のArrayList:" + fishList); System.out.println("返り値:" + result2); } } |
ArrayList.addメソッドは、ArrayListに引数で指定されている値を追加するメソッドです。
詳しくはこちらの記事をご参考ください。
実行結果
Javaプログラムを実行します。
実行のやり方は
- プログラムを右クリックして実行
- 実行タブから実行
- ガターから実行
の3種類あるので、いずれかで実行します。
詳しい解説は以下の記事をご参考ください。
1 2 3 4 5 6 7 8 9 10 11 |
■ArrayList.addAllメソッドサンプル ・インデックスなしで追加 実行前のArrayList:[リンゴ, オレンジ, ぶどう] 追加するArrayList:[メロン, スイカ] 実行後のArrayList:[リンゴ, オレンジ, ぶどう, メロン, スイカ] 返り値:true ・インデックスありで追加 実行前のArrayList:[アジ, カツオ, サケ] 追加するArrayList:[マグロ, ハマチ] 実行後のArrayList:[アジ, カツオ, マグロ, ハマチ, サケ] 返り値:true |
インデックスを指定しなかった場合は最後に、指定した場合は指定した位置にコレクションが挿入できていることが確認できました。
まとめ:ArrayList.addAllメソッドを使ってみよう!
以上がJavaのArrayList.addAllメソッドについての解説でした!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント