Java
 Computer >> コンピューター >  >> プログラミング >> Java

【初心者向け】JavaのArrayListメソッド完全ガイド|コード例つきで解説

この記事では、JavaのArrayListでよく使われる主要なメソッドを、実行結果つきのコード例とともにわかりやすく解説します。

ArrayListクラスは、サイズを自由に変更できる「可変長配列」です。リストの要素数が事前にわからない場合に特に便利で、Javaの開発現場で最も広く使われているコレクションの一つです。

ArrayListクラスは、java.utilパッケージに含まれています。

ArrayListの作成方法

ArrayListを作成して要素を追加するには、StringIntegerなど扱いたい型を指定してArrayListオブジェクトをインスタンス化します。

なお、add()メソッドはArrayListの末尾に要素を追加します。特定の位置(インデックス)に要素を追加する方法は、次のセクションで解説します。

import java.util.ArrayList;

public class ArrayListTutorial {
  public static void main(String[] args) {
    ArrayList<String> fruitBasket = new ArrayList<>();
    fruitBasket.add("Apple");
    fruitBasket.add("Banana");
    fruitBasket.add("Grapes");
    fruitBasket.add("Orange");
    System.out.println(fruitBasket);
  }
}

出力:

[Apple, Banana, Grapes, Orange]

特定の位置に要素を追加する方法

指定した位置に要素を追加するには、add()メソッドの第1引数に挿入先のインデックス番号を渡します。既存の要素は自動的に後ろへずらされます。

import java.util.ArrayList;

public class ArrayListTutorial {
  public static void main(String[] args) {
    ArrayList<String> fruitBasket = new ArrayList<>();
    fruitBasket.add("Apple");
    fruitBasket.add("Banana");
    fruitBasket.add("Grapes");
    fruitBasket.add("Orange");
    fruitBasket.add(2, "Melon");
    System.out.println(fruitBasket);
  }
}

出力:

[Apple, Banana, Melon, Grapes, Orange]

ArrayListの要素にアクセスする方法

get()メソッドを使うと、指定したインデックス番号の要素を取得できます。インデックスは0から始まる点に注意してください。

import java.util.ArrayList;

public class ArrayListTutorial {
  public static void main(String[] args) {
    ArrayList<String> fruitBasket = new ArrayList<>();
    fruitBasket.add("Apple");
    fruitBasket.add("Banana");
    fruitBasket.add("Grapes");
    fruitBasket.add("Orange");
    System.out.println(fruitBasket.get(1));
  }
}
Banana

ArrayListから要素を削除する方法

要素を削除するにはremove()メソッドを使用し、削除したい要素のインデックス番号を指定します。

import java.util.ArrayList;

public class ArrayListTutorial {
  public static void main(String[] args) {
    ArrayList<String> fruitBasket = new ArrayList<>();
    fruitBasket.add("Apple");
    fruitBasket.add("Banana");
    fruitBasket.add("Grapes");
    fruitBasket.add("Orange");
    fruitBasket.remove(0);
    System.out.println(fruitBasket);
  }
}

出力:

[Banana, Grapes, Orange]

ArrayListの全要素を削除する方法

clear()メソッドを使うと、ArrayList内のすべての要素を一括で削除できます。

import java.util.ArrayList;

public class ArrayListTutorial {
  public static void main(String[] args) {
    ArrayList<String> fruitBasket = new ArrayList<>();
    fruitBasket.add("Apple");
    fruitBasket.add("Banana");
    fruitBasket.add("Grapes");
    fruitBasket.add("Orange");
    fruitBasket.clear();
    System.out.println(fruitBasket);
  }
}
[]

ArrayListのサイズを取得する方法

size()メソッドは、ArrayListに現在格納されている要素数を返します。

import java.util.ArrayList;

public class ArrayListTutorial {
  public static void main(String[] args) {
    ArrayList<String> fruitBasket = new ArrayList<>();
    fruitBasket.add("Apple");
    fruitBasket.add("Banana");
    fruitBasket.add("Grapes");
    fruitBasket.add("Orange");
    System.out.println(fruitBasket.size());
  }
}

出力:

4

ArrayListをループ処理する方法

通常のforループとsize()メソッドを組み合わせることで、ArrayListのすべての要素を順番に処理できます。

import java.util.ArrayList;

public class ArrayListTutorial {
  public static void main(String[] args) {
    ArrayList<String> fruitBasket = new ArrayList<>();
    fruitBasket.add("Apple");
    fruitBasket.add("Banana");
    fruitBasket.add("Grapes");
    fruitBasket.add("Orange");
    for (int i = 0; i < fruitBasket.size(); i++) {
      System.out.println(fruitBasket.get(i));
    }
  }
}

出力:

Apple
Banana
Grapes
Orange

拡張forループ(for-each)でループ処理する

インデックスが不要な場合は、拡張for文(for-each)を使うとより簡潔に記述できます。

import java.util.ArrayList;

public class ArrayListTutorial {
  public static void main(String[] args) {
    ArrayList<String> fruitBasket = new ArrayList<>();
    fruitBasket.add("Apple");
    fruitBasket.add("Banana");
    fruitBasket.add("Grapes");
    fruitBasket.add("Orange");
    for (String i : fruitBasket) {
      System.out.println(i);
    }
  }
}

出力:

Apple
Banana
Grapes
Orange

数値を扱うArrayListの例

文字列だけでなく、Integer型を指定すれば数値のリストも同じように作成できます。

import java.util.ArrayList;

public class ArrayListTutorial {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<>();
    numbers.add(10);
    numbers.add(20);
    numbers.add(30);
    numbers.add(40);
    for (int i : numbers) {
      System.out.println(i);
    }
  }
}

出力:

10
20
30
40

ArrayListの要素を置き換える方法

set()メソッドを使うと、指定したインデックスの要素を別の値に置き換えられます。第1引数に置き換え対象のインデックス、第2引数に新しい値を指定します。

import java.util.ArrayList;

public class ArrayListTutorial {
  public static void main(String[] args) {
    ArrayList<String> fruitBasket = new ArrayList<>();
    fruitBasket.add("Apple");
    fruitBasket.add("Banana");
    fruitBasket.add("Grapes");
    fruitBasket.add("Orange");

    fruitBasket.set(3, "Peach");

    for (String i : fruitBasket) {
      System.out.println(i);
    }
  }
}

出力:

#置き換え前
[Apple, Banana, Grapes, Orange]

#置き換え後
[Apple, Banana, Grapes, Peach]

ArrayListの要素をシャッフルする方法

Collectionsクラスのshuffle()メソッドを使うと、ArrayListの要素をランダムな順序に入れ替えられます。

import java.util.ArrayList;
import java.util.Collections;

public class ArrayListTutorial {
  public static void main(String[] args) {
    ArrayList<String> fruitBasket = new ArrayList<>();
    fruitBasket.add("Apple");
    fruitBasket.add("Banana");
    fruitBasket.add("Grapes");
    fruitBasket.add("Orange");
    System.out.println(fruitBasket);

    Collections.shuffle(fruitBasket);
    System.out.println(fruitBasket);
  }
}

出力:

#シャッフル前
[Apple, Banana, Grapes, Orange]

#シャッフル後
[Grapes, Orange, Banana, Apple]

ArrayListの要素をソートする方法

Collections.sort()メソッドを使うと、要素を昇順に並べ替えられます。

import java.util.ArrayList;
import java.util.Collections;

public class ArrayListTutorial {
  public static void main(String[] args) {
    ArrayList<String> fruitBasket = new ArrayList<>();
    fruitBasket.add("Orange");
    fruitBasket.add("Apple");
    fruitBasket.add("Grapes");
    fruitBasket.add("Banana");
    System.out.println(fruitBasket);

    Collections.sort(fruitBasket);
    System.out.println(fruitBasket);
  }
}

出力:

#ソート前
[Orange, Apple, Grapes, Banana]

#ソート後
[Apple, Banana, Grapes, Orange]

ArrayListの要素を逆順にする方法

Collections.reverse()メソッドを使うと、要素の並び順を反転できます。

import java.util.ArrayList;
import java.util.Collections;

public class ArrayListTutorial {
  public static void main(String[] args) {
    ArrayList<String> fruitBasket = new ArrayList<>();
    fruitBasket.add("Apple");
    fruitBasket.add("Banana");
    fruitBasket.add("Grapes");
    fruitBasket.add("Orange");
    System.out.println(fruitBasket);

    Collections.reverse(fruitBasket);
    System.out.println(fruitBasket);
  }
}

出力:

#元のリスト
[Apple, Banana, Grapes, Orange]

#反転後
[Orange, Grapes, Banana, Apple]

ArrayListを配列に変換する方法

toArray()メソッドを使うと、ArrayListを通常の配列に変換できます。

import java.util.ArrayList;

public class ArrayListTutorial {
  public static void main(String[] args) {
    ArrayList<String> fruitBasket = new ArrayList<>();
    fruitBasket.add("Apple");
    fruitBasket.add("Banana");
    fruitBasket.add("Grapes");
    fruitBasket.add("Orange");

    String[] fruitArray = new String[fruitBasket.size()];
    fruitBasket.toArray(fruitArray);

    for (String i : fruitArray) {
      System.out.println(i);
    }
  }
}

出力:

Apple
Banana
Grapes
Orange

ArrayList内の2つの要素を入れ替える方法

Collections.swap()メソッドを使うと、指定した2つのインデックスにある要素を簡単に入れ替えられます。

import java.util.ArrayList;
import java.util.Collections;

public class ArrayListTutorial {
  public static void main(String[] args) {
    ArrayList<String> fruitBasket = new ArrayList<>();
    fruitBasket.add("Apple");
    fruitBasket.add("Banana");
    fruitBasket.add("Grapes");
    fruitBasket.add("Orange");
    System.out.println(fruitBasket);

    Collections.swap(fruitBasket, 1, 3);
    System.out.println(fruitBasket);
  }
}

出力:

#入れ替え前
[Apple, Banana, Grapes, Orange]

#入れ替え後
[Apple, Orange, Grapes, Banana]

2つのArrayListを結合する方法

addAll()メソッドを使うと、あるArrayListのすべての要素を別のArrayListの末尾に追加して結合できます。

import java.util.ArrayList;

public class ArrayListTutorial {
  public static void main(String[] args) {
    ArrayList<String> fruitBasket1 = new ArrayList<>();
    ArrayList<String> fruitBasket2 = new ArrayList<>();

    fruitBasket1.add("Apple");
    fruitBasket1.add("Banana");
    fruitBasket1.add("Grapes");
    fruitBasket1.add("Orange");

    fruitBasket2.add("Melon");
    fruitBasket2.add("Strawberries");

    fruitBasket1.addAll(fruitBasket2);

    System.out.println(fruitBasket1);
  }
}

出力:

[Apple, Banana, Grapes, Orange, Melon, Strawberries]

まとめ

この記事では、JavaのArrayListに対する代表的な操作を、コード例と実行結果とともに紹介しました。add()get()remove()といった基本操作から、Collectionsクラスを利用したソート・シャッフル・反転などの便利な操作まで、そのまま実務で活用できる内容です。ぜひご自身のプロジェクトでも試してみてください。

  1. Java StreamのfindAny()メソッドの使い方を例付きで解説

    Java Stream APIのfindAny()メソッドは、ストリーム内のいずれか1つの要素を返すメソッドです。戻り値はOptional型で、ストリームが空の場合には空のOptionalが返されます。ここでいうOptionalとは、null以外の値を保持している場合と保持していない場合があるコンテナオブジェクトのことです。findAny()は並列処理(parallel stream)との相性が良く、どの要素が返されても問題ない場合に効率的に動作するのが特徴です。基本的な構文Optional<T> result = stream.findAny();例1:整数のリストからfindA

  2. 【Java】Character.charCount()メソッドの使い方を具体例付きで解説

    Character.charCount()メソッドとはCharacter.charCount()メソッドは、指定された文字(Unicodeコードポイント)を表すために必要なchar値の数を判定するためのメソッドです。動作ルールはシンプルで、以下のように決まっています。指定されたコードポイントが0x10000以上の場合 → 2を返す指定されたコードポイントが0x10000未満の場合 → 1を返すこれは、Unicodeにおいて0x10000以上のコードポイント(いわゆる補助文字)が、サロゲートペアと呼ばれる2つのchar値(各16ビット)で表現されるためです。したがって、あるコードポイントが補助文