ArrayListとは
Javaの通常の配列では、最初から配列の数を決める必要がありました。
a=new int[10]
これでは、後から配列の数を変更できなかったり、最初から配列の数が決まっていないときなどに不便ですね。
ArrayListは、このような不便を解決してくれる予め用意されたJavaのクラスです。
ArrayListの特徴
下記のような特徴があります。
1. オブジェクトであればどんな型でも扱える
2. 配列に値を後から追加することができる
3. 追加した順に並ぶ
4. nullも値として追加できる
5. 重複した値も追加できる
6. スレッドセーフではない
通常の配列に比べて、各段に使いやすいですよね。
実際の開発では、配列よりもArrayListを使うことが多いようです。
ArrayListの書き方
ArrayListは、次のように書きます。
ArrayList<型> リスト名 = new ArrayList<型>();
「型」には、クラス名を指定します。
指定したクラスのオブジェクトを、リストに要素として格納することができます。
実際に書いてみます。
ArrayList<String> strList = new ArrayList<String>();
ArrayList<Integer> intList = new ArrayList<Integer>();
ここで1つ注意。リストの要素は参照型である必要があります。
例えばintのように基本データ型を要素に持つリストは作成できません。
intのような基本データ型をリストに入れたい場合は、上記の「Integerの場合」のようにラッパークラスを用いて定義します。
(基本データ型とは:参照型とは異なり、直接値を格納する型のことです。)
ArrayListの主なメソッド
AllayListにはあらかじめ便利なメソッドが用意されています。
よく使われるメソッドを下記にまとめました。
メソッド名 | 機能 |
---|---|
void add(int index, Object element) | リストの指定した位置に、指定した要素を追加する。 |
boolean add(Object element) | リストの末尾に要素を追加する。 |
void clear() | リストからすべての要素を削除する。 |
Object get(int idex) | リストの指定した位置の要素を取得する。 |
int indexOf(Object element) | 引数と同じ要素を先頭から検索する。 |
boolean isEmpty() | リストが空かどうか調べる。空の場合、trueを返す。 |
Object remove(int index) | リストの指定した位置から要素を削除する。 |
Object set(int index, Object element) | リストの指定した位置の要素を、指定した新しい要素に置き換える。 |
int size() | リストに入っている要素の数を取得する。 |
実際に書いてみる
ではArrayListを使って実際にコードを書いてみます。
例1
//ArrayListクラスのインポート
import java.util.ArrayList;
public class Main{
public static void main(String[] args){
//型を指定しなくてもよい
ArrayList list = new ArrayList<>;
//要素を追加していく
list.add("みかん");
list.add(5);
list.add('A');
//リストの中身を出力する
for (Object obj : list){
System.out.print(obj);
}
}
}
みかん5A
このように型が異なる要素を、一つのリストに追加することができます。
例2
//ArrayListクラスのインポート
import java.util.ArrayList;
public class Main{
public static void main(String[] args){
//変数strに、文字列abcdefgを代入
String str = "abcdefg";
//indexOfメソッドを使用して引数aを変数strから検索
System.out.print(str.indexOf("a"));
}
}
0
今回はindexOfメソッドを使った例です。
変数strに代入した文字列「abcdefg」から、indexOfメソッドの引数に設定した「a」を検索してみました。
実行結果の「0」は、文字列「abcdefg」における「a」の位置を表しています。
「a(0) b(1) c(2) d(3) e(4) f(5) g(6)」 ※()内の数字は位置を表しています。
なので、例えばindexOfメソッドの引数がdなら3、gなら6になります。