はじめに
Javaで配列に要素を追加するプログラムをメソッドの形にまとめて投稿したいと思います.「Java 配列 要素 追加」と検索しても、Pythonのappend()
などのように要素を追加すると,それに伴って大きさも増えてくれるメソッドなどがなさそうなのかなと思ったので,備忘録も兼ねて残します.
JavaのList<>
とか使って.add()
などを利用すれば,やりたいことは実現できそうなのですが,List<>
を使わずに動的な要素追加ってできないだろうかと考えて書いてみました.
コード
確認用のコード
実行したら要素を追加する前の配列と追加した後の配列を標準出力するプログラムです.
class Main{
public static void main(String[] args){
// 追加対象の配列
int[] oldArr = {0, 1, 2, 3, 4};
// 追加したい要素
int newElement = 5;
// 追加後の配列を格納する配列
int[] newArr;
// forを回すための制御変数
int n;
// 追加前の配列を表示
System.out.println("追加前の配列");
for(n = 0 ; n < oldArr.length ; n++){
System.out.println(oldArr[n]);
}
// 要素を追加する関数を実行
// ここで配列に要素が追加されてます.
newArr = AddElement(oldArr, newElement);
// 追加後の配列を表示
System.out.println("追加後の配列");
for(n = 0 ; n < newArr.length ; n++){
System.out.println(newArr[n]);
}
}
// 追加前の配列と追加したい要素を受け取って,追加後の配列を返すメソッド
public static int[] addElement(int[] oldArr, int newElement){
// 追加後の配列を宣言
// 大きさは追加前の配列の大きさより1だけ大きい
int[] newArr = new int[oldArr.length + 1];
// 追加後の配列に追加前の配列をコピー
// ここの処理が肝
System.arraycopy(oldArr, 0, newArr, 0, oldArr.length);
// 追加後の配列の末尾に追加したい要素を代入
newArr[oldArr.length] = newElement;
// 追加後の配列を返却
return newArr;
}
}
「要素を追加して追加後の配列を返すメソッド」だけを利用する場合は,下のようにAddElement()
の部分をコピペしていただければと思います.
class AddElement{
public static int[] addElement(int[] oldArr, int newElement){
int[] newArr = new int[oldArr.length + 1];
System.arraycopy(oldArr, 0, newArr, 0, oldArr.length);
newArr[oldArr.length] = newElement;
return newArr;
}
}
また,今回は配列の中身の変数型がint
ですが,必要でしたらint[]
のint
の部分をString
やdouble
などに変えて文字列配列やdouble
配列などに変えてください.
実行結果
実行するとこんな感じになります.
追加前の配列
0
1
2
3
4
追加後の配列
0
1
2
3
4
5
おわりに
JavaのList
以外で配列に要素を追加するプログラムを書けないかなと思って書いてみました.もしかしたらList<>
を呼び出してList<>
を配列にキャストして返した方が速いプログラムかもしれませんが,すみませんそこまでは試してないです泣
「Java 配列 要素 追加」で検索しても「Listを使わずにやる方法ってないのかなあ」とか「要素の大きさを追加に伴って自動的に増やしたいんだけど別の方法ないのかな」といった風に感じられていらっしゃる方に貢献出来たらと思います.