【Java】イテレータをリストに変換する方法をわかりやすく解説
はじめに
Javaのコレクション操作において、イテレータ(Iterator)は要素を順番に走査するための便利なインターフェースですが、場合によってはリスト(List)形式に変換して扱いたいことがあります。本記事では、イテレータをリストに変換するシンプルな方法を解説します。
準備:Integer型のイテレータを作成する
まず、以下のようにArrays.asList()を使って、Integer型の値を持つイテレータを作成します。
Iterator<Integer> iterator = Arrays.asList(50, 100, 200, 300, 400, 500, 1000).iterator();
イテレータからリストへの変換手順
変換の手順は非常にシンプルです。空のArrayListを作成し、forEachRemaining()メソッドを使ってイテレータの全要素をリストに追加します。
List<Integer> myList = new ArrayList<>(); iterator.forEachRemaining(myList::add);
forEachRemaining()は、イテレータの残りのすべての要素に対して指定した処理を実行するメソッドです。ここではメソッド参照myList::addを渡すことで、各要素が順番にリストへ追加されていきます。
完全なサンプルプログラム
以下は、Javaでイテレータをリストに変換するプログラムの全体像です。
import java.util.*;
public class Demo {
public static void main(String[] args){
Iterator<Integer> iterator = Arrays.asList(50, 100, 200, 300, 400, 500, 1000).iterator();
List<Integer> myList = new ArrayList<>();
iterator.forEachRemaining(myList::add);
System.out.println("Iterator to list = "+myList);
}
}
実行結果
このプログラムを実行すると、コンソールには次のように出力されます。
Iterator to list = [50, 100, 200, 300, 400, 500, 1000]
補足:別の変換方法
Java 8以降では、上記の方法以外にもいくつかの選択肢があります。
- Stream APIを活用する方法:
StreamSupport.stream(iterator, false).collect(Collectors.toList())を使えば、ストリーム経由でリスト化できます。 - whileループを使う方法:
hasNext()とnext()を組み合わせて従来通り1件ずつ追加することも可能です。
中でもforEachRemaining()を使う方法は、コードが最も簡潔で可読性が高いためおすすめです。
まとめ
イテレータをリストに変換するには、空のArrayListを用意し、forEachRemaining(myList::add)を呼び出すだけで実現できます。Java 8以降で使えるこの手法は、ループ処理を書かずに済むため、コードの保守性や可読性の向上にも役立ちます。
-
JavaのIteratorとListIteratorの違いを徹底解説!特徴と使い分けのポイント
IteratorとListIteratorとは Javaでは、コレクションに格納された要素を1つずつ順番に取り出して処理するために、IteratorとListIteratorという2つのインターフェースが提供されています。 両者は内部実装こそ異なるものの、目的はどちらも「コレクション内のデータを順次走査する」ことです。しかし、利用できるコレクションの種類や、走査中に行える操作には大きな違いがあります。 IteratorとListIteratorの主な違い一覧 No.比較項目IteratorListIterator 1適用範囲List、Set、Queueなど、あらゆる種類のコレクションに対し
-
JavaでList(リスト)を配列に変換する方法|toArray()とArrays.asList()の使い方
Javaの開発において、List(リスト)と配列(Array)の相互変換は非常によく使われる基本的な操作です。 Listを配列に変換する最も簡単かつ推奨される方法は、.toArray()メソッドを使うことです。逆に、配列をListに戻したい場合は、Arrays.asList()メソッドを使用します。 以下では、文字列(String)のListや整数(Integer)のListを、それぞれ対応する配列に変換する具体例を紹介します。 String型のListを配列に変換する import java.util.ArrayList; import java.util.List; public cl