java.util.ArrayListは、異なる型を扱ったり、必要に応じて要素数が自動的に増えたりと配列にはできない機能をもったコレクション(集合体)です。
本記事では、そのjava.util.ArrayListの操作をまとめてみました。
宣言
ArrayListの基本的な宣言は、以下の通りです。
//基本
ArrayList<~> list = new ArrayList<~>();
//具体例
ArrayList<String> StringList = new ArrayList<String>(); //String型を格納するArrayListを宣言
Java SE 7以上であれば、以下のような書き方もできます。
//Java SE7以上
ArrayList<~> list = new ArrayList<>();
//具体例
ArrayList<String> StringList = new ArrayList<>(); //String型を格納するArrayListを宣言
~には、ArrayListに格納するインスタンスを指定します。基本データ型は、指定できません。
基本データ型をArrayListに格納したい場合、ラッパークラスを用いることで実現できます。
基本データ型 | ラッパークラス |
byte | java.lang.Byte |
short | java.lang.Short |
int | java.lang.Integer |
long | java.lang.Long |
float | java.lang.Float |
double | java.lang.Double |
char | java.lang.Character |
boolean | java.lang.Boolean |
このように<>の中に型を記述することでArrayList(コレクション)に格納する型を制限する機能をジェネリクスといいます。
ジェネリクスを指定せずにArrayListを宣言することもできます。
ArrayList list = new ArrayList();
この場合、オブジェクトであれば、どの型でも格納できます。
要素の取得
ArrayListの要素を取得するにはgetメソッドを使います。
get(番号)
指定した位置(番号)の要素を取得します。
番号は0始まりであることに注意してください。
指定した位置(番号)がない場合、実行時エラーとなります。
ArrayList<String> StringList = new ArrayList<String>();
StringList.add("abc");
System.out.println(StringList.get(0)); //abc
要素の追加
ArrayListに要素を追加するにはaddメソッドを使います。
add(要素)
ArrayListの最後にその要素が追加されます。
ジェネリクスで指定した型でない要素を入れた場合、コンパイルエラーとなります。
ArrayList<String> StringList = new ArrayList<String>();
StringList.add("abc");
StringList.add("def");
for(String str : StringList) {
System.out.print(str); //abcdef
}
add(番号,要素)
指定した位置(番号)に要素が挿入されます。
番号は0始まりであることに注意してください。
指定した位置(番号)より後の要素は、ひとつずつ位置が後ろにずれます。
指定した位置(番号)がない場合、実行時エラーとなります。
ジェネリクスで指定した型でない要素を入れた場合、コンパイルエラーとなります。
ArrayList<String> StringList = new ArrayList<String>();
StringList.add("abc");
StringList.add("def");
StringList.add(1,"ghi")
for(String str : StringList) {
System.out.print(str); //abcghidef
}
要素の上書き
ArrayListの要素を上書きするにはsetメソッドを使います。
set(番号,要素)
指定した位置(番号)に要素を上書きします。
番号は0始まりであることに注意してください。
指定した位置(番号)がない場合、実行時エラーとなります。
ジェネリクスで指定した型でない要素を入れた場合、コンパイルエラーとなります。
ArrayList<String> StringList = new ArrayList<String>();
StringList.add("abc");
StringList.add("def");
StringList.set(1,"ghi");
for(String str : StringList) {
System.out.print(str); //abcghi
}
要素の削除
ArrayListの要素を削除するにはremoveメソッドを使います。
remove(番号)
指定した位置(番号)にある要素を削除します。
番号は0始まりであることに注意してください。
指定した位置(番号)より後の要素は、ひとつずつ位置が前にずれます。
指定した位置(番号)がない場合、実行時エラーとなります。
ArrayList<String> StringList = new ArrayList<String>();
StringList.add("abc");
StringList.add("def");
StringList.remove(0);
for(String str : StringList) {
System.out.print(str); //def
}
remove(要素)
指定した要素を削除します。複数ある場合は、最初の要素を削除します。
指定した要素より後の要素は、ひとつずつ位置が後ろにずれます。
ジェネリクスで指定した型でない要素を入れた場合、コンパイルエラーとなります。
ArrayList<String> StringList = new ArrayList<String>();
StringList.add("abc");
StringList.add("def");
StringList.remove("abc");
for(String str : StringList) {
System.out.print(str); //def
}
その他のメソッド
size()
ArrayListに格納されている要素数を返します。
ArrayList<String> StringList = new ArrayList<String>();
StringList.add("abc");
StringList.add("def");
StringList.add("ghi");
System.out.println(StringList.size()); //3
isEmpty()
ArrayListの要素数がゼロかどうかをboolean型で返します。
ArrayList<String> StringList = new ArrayList<String>();
System.out.println(StringList.isEmpty()); //true
contains(要素)
指定した要素があるかどうかをboolean型で返します。
ArrayList<String> StringList = new ArrayList<String>();
StringList.add("abc");
StringList.add("def");
StringList.add("ghi");
System.out.println(StringList.contains("abc")); //true
indexOf(要素)
指定した要素の位置を番号で返します。
位置は0始まりであることに注意してください。
指定された要素がない場合は -1を返します。
ArrayList<String> StringList = new ArrayList<String>();
StringList.add("abc");
StringList.add("def");
StringList.add("ghi");
System.out.println(StringList.indexOf("ghi")); //2
まだまだたくさんあるので気になる人は公式ドキュメントから参照してください。