2
2

More than 3 years have passed since last update.

【Java】ArrayListの基礎

Last updated at Posted at 2021-05-13

ArrayListとは

Javaの通常の配列では、最初から配列の数を決める必要がありました。

a=new int[10]

これでは、後から配列の数を変更できなかったり、最初から配列の数が決まっていないときなどに不便ですね。
ArrayListは、このような不便を解決してくれる予め用意されたJavaのクラスです。

ArrayListの特徴

下記のような特徴があります。
1. オブジェクトであればどんな型でも扱える
2. 配列に値を後から追加することができる
3. 追加した順に並ぶ
4. nullも値として追加できる
5. 重複した値も追加できる
6. スレッドセーフではない

通常の配列に比べて、各段に使いやすいですよね。
実際の開発では、配列よりもArrayListを使うことが多いようです。

ArrayListの書き方

ArrayListは、次のように書きます。

ArrayList<> リスト名 = new ArrayList<>();

「型」には、クラス名を指定します。
指定したクラスのオブジェクトを、リストに要素として格納することができます。

実際に書いてみます。

Stringの場合
ArrayList<String> strList = new ArrayList<String>();
Integerの場合
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になります。

2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2