1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JavaのArrayListクラス、ジェネリクス、イテレーター(Iterator)

Last updated at Posted at 2023-01-04

ArrayListクラスとは

・java.utilパッケージに含まれている複数のオブジェクトをまとめて管理出来るコレクションクラスの一つ
・配列は最初に格納出来る要素数は決まっているがArrayListクラスは要素の数が動的に変わる配列で文字列や整数などのいろいろな配列を入れる事が出来る。

・格納する要素のデータ型の指定する際にはジェネリクス(<>) 内に指定する(ジェネリクスとして<〜>で囲んだ指定部分を「型パラメータ」とも呼び、型パラメータにはクラス名を指定する。)

ArrayList<データ型(型パラメータ)> オブジェクト名 = new ArrayList<>();

データ型の部分には ArryaListの要素に格納する値のデータ型を指定する。例えば文字列を格納する場合は次のように記述する。

ArrayList<String> list = new ArrayList<String>();
//クラス名  オブジェクト名  =  new  クラス名;

右辺のArrayListで一つのクラス名と考える

ArrayListはListインターフェースを実装したクラスなので、次のように Listオブジェクトとして作成することもできる。
Listオブジェクトとして作成した場合は、ArrayListクラスでのみ定義されているメソッドは利用できなくなりますが、同じListインターフェースを実装したクラスへ変換する場合などに便利。

List<String> list = new ArrayList<>();

*主に使用するメソッドは Listインターフェースで定義されているので、通常は List オブジェクトとして作成することが多い

データ型には基本データ型であるintやdoubleなどは指定することが出来ないのでこれらの数値を格納したい場合には、それぞれの基本データ型に対応したラッパークラスを使用する。

int 型の値を格納する ArrayList クラスのインスタンスを作成
List<Integer> list = new ArrayList<>();

ArrayListクラスでよく使われるメソッド

・addメソッド:1つの値をリストの要素としてに追加するメソッド
・getメソッド:リストに追加されている要素の中で指定したインデックスの要素に格納されているオブジェクトを取得する
・sizeメソッド:リストに現在追加されている要素の数を取得する

サンプルコード
import java.util.ArrayList;

public class ArrayListSample{
  public static void main(String[] args){
    ArrayList<String> list = new ArrayList<String>();
    list.add("Java入門講座");
    list.add("ここまで");
    list.add("よく頑張りましたね!");
    
    for(int i = 0; i < list.size(); i++){
      System.out.println(list.get(i));
    }
  }
}
出力結果
Java入門講座
ここまで
よく頑張りましたね!

イテレーターとは

・コレクション内の要素を指し示すカーソルの様なモノでコレクションに対してデータを取り出す役割をする。
・使うことで、HashSet クラスやLinkedList クラスなどのさまざまなコレクションの要素に、同じプログラムコードで1つずつ効率的にアクセスでき、コレクションの中の要素を1つすつ順番に参照する能力を持っている。
・コレクションクラスのiteratorメソッドで取得出来る。

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(10);
list.add(20);
Iterator<Integer> it = list.iterator();

Iteratorの代表的なメソッド

・hasNextメソッド:配列からデータを繰り返し取り出す処理をする際に、次のデータが存在すればtrueを返す。
・nextメソッド:繰り返し処理の際に、次のデータを取り出す。
・removeメソッド:最後に返した要素を削除する。

サンプル
import java.util.ArrayList;
import java.util.Iterator;

public class IteratorSample{
  public static void main(String[] args){
    ArrayList<String> list = new ArrayList<String>();
    list.add("これからも");
    list.add("Javaの勉強を");
    list.add("楽しんでいきましょう!");

    Iterator<String> it = list.iterator();
    while(it.hasNext()){
      System.out.println(it.next());
    }
  }
}
出力結果
これからも
Javaの勉強を
楽しんでいきましょう!

hasNext()で要素が残っているかを調べて残っているなら処理を続ける。
next()で要素を取得し、イテレーターは次の要素に移動する。

参考記事

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?