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

JavaのIterator(イテレータ)とCollection(コレクション)の違いと使い方を徹底解説

Javaのコレクションフレームワークにおいて、Iterator(イテレータ)Collection(コレクション)はデータを扱う上で非常に重要なインターフェースです。本記事では、それぞれの特徴や役割の違いを、実際のコード例とともにわかりやすく解説します。


Iterator(イテレータ)とは

Iteratorは、コレクションフレームワーク内で必要なタイミングで要素を1つずつ取り出すために使用されるインターフェースです。

public interface Iterator

next()メソッドを使うことで、次の要素へ移動しながらアクセスできます。また、remove()メソッドを使用すれば、データ構造から特定の要素を削除することも可能です。

Iteratorは、実行する操作の種類が少ないため、一般的なコレクション操作と比較して処理が高速であるというメリットがあります。

Iteratorの使用例

以下は、リストに対してイテレータを使用するサンプルコードです。

import java.io.*;
import java.util.*;
public class Demo{
    public static void main(String[] args){
        ArrayList<String> my_list = new ArrayList<String>();
        my_list.add("Its");
        my_list.add("a");
        my_list.add("sample");
        Iterator iterator = my_list.iterator();
        System.out.println("The list contains the following elements : ");
        while (iterator.hasNext())
            System.out.print(iterator.next() + ",");
        System.out.println();
    }
}

実行結果

The list contains the following elements :
Its,a,sample,

コードの解説

このプログラムでは、Demoクラスのmainメソッド内で新しいArrayListを作成し、add()メソッドを使って文字列要素を追加しています。その後、iterator()メソッドでイテレータを取得し、hasNext()で次の要素が存在するかを確認しながら、next()で要素を1つずつ取り出してコンソールに出力しています。

Collection(コレクション)とは

public interface Collection<E> extends Iterable<E>

ここでEは、コレクションに格納される要素の型を表します。コレクションフレームワークは、複数のオブジェクトをひとまとまりのグループとして扱うためのさまざまなクラスやインターフェースを定義する仕組みです。

Collectionでは、以下のような主要なメソッドを利用できます。

  • add():要素を追加する
  • iterate():要素を順番に走査する
  • remove():指定した要素を削除する
  • clear():すべての要素を消去する

Collectionの使用例

次の例では、配列・Vector・Hashtableという3つの異なるデータ構造を扱っています。

import java.io.*;
import java.util.*;
public class Demo{
    public static void main (String[] args){
        int my_arr[] = new int[] {56, 78, 90};
        Vector<Integer> my_vect = new Vector();
        Hashtable<Integer, String> my_hashtab = new Hashtable();
        my_vect.addElement(0);
        my_vect.addElement(100);
        my_hashtab.put(0,"sample");
        my_hashtab.put(100,"only");
        System.out.print("The first element in the array is ");
        System.out.println(my_arr[0]);
        System.out.print("The first element in the vector is ");
        System.out.println(my_vect.elementAt(0));
        System.out.print("The first element in the hashtable is ");
        System.out.println(my_hashtab.get(0));
    }
}

実行結果

The first element in the array is 56
The first element in the vector is 0
The first element in the hashtable is sample

コードの解説

このプログラムでは、まず整数型の配列を定義し、初期値として3つの値を設定しています。続いて、VectorHashtableのインスタンスを生成し、VectorにはaddElement()メソッドで要素を、Hashtableにはput()メソッドでキーと値のペアを追加しています。最後に、3つのデータ構造それぞれの先頭要素をコンソールに出力しています。

まとめ

Iteratorはコレクション内の要素を効率的かつ安全に順次アクセスするための手段であり、Collectionは複数のオブジェクトをひとつの単位として管理するための基盤となるインターフェースです。両者は密接に関連しており、適切に使い分けることで、Javaにおけるデータ操作をより柔軟かつ効率的に行うことができます。

  1. JavaのCollectors.toCollection()メソッドの使い方を徹底解説

    JavaのCollectors.toCollection()メソッドは、ストリームの入力要素を出現順(エンカウンター順)に新しいCollectionへ蓄積するCollectorを返します。toList()やtoSet()と異なり、ArrayListやTreeSetなど、任意のコレクション型を自由に指定できるのが大きな特徴です。toCollection()メソッドの構文static <T,C extends Collection<T>>Collector<T,?,C> toCollection(Supplier<C> collectionFacto

  2. JavaのIteratorとListIteratorの違いを徹底解説!使い方とサンプルコード付き

    Javaでは、コレクション内の要素を順番に処理するための仕組みとして、Iterator(イテレータ)とListIterator(リストイテレータ)という2つのインターフェースが提供されています。この記事では、両者の違いやそれぞれの使い方を、実際のコード例とともにわかりやすく解説します。 IteratorとListIteratorの主な違い IteratorはJavaのインターフェースの一つで、リストの要素を前方方向(先頭から末尾へ)のみ走査できます。一方、ListIteratorはIteratorインターフェースを継承したインターフェースで、要素を前方・後方の両方向に走査できる点が大きな特徴で