JavaでArrayListを配列(Array)に変換する方法|toArray()とasList()の使い方
JavaでArrayListを配列に変換するには
Javaでプログラミングをしていると、ArrayListを配列(Array)に変換したい、あるいはその逆を行いたい場面に出くわすことがあります。例えば、ポートフォリオ内の銘柄リストが配列として保存されており、それをArrayListに変換して柔軟に扱いたいといったケースです。
Javaでは、ArrayListを配列に変換するにはtoArray()メソッドを使用し、配列をリストに変換するにはasList()メソッドを使用します。この記事では、具体的なサンプルコードを交えながら、これら2つの変換方法について詳しく解説します。
Javaにおける配列とArrayListの違い
Javaの配列は、0個以上の値を順序付けて格納するためのデータ構造です。例えば、お菓子屋さんで販売されているキャンディのリストや、カフェに寄せられた注文の一覧などを配列で管理できます。配列には、float型、boolean型、String型など、あらゆるデータ型を格納することが可能です。
以下は、Javaで配列を宣言する例です。
String[] names = new String[5];
この例では、5つの文字列値を格納できるnamesという配列を初期化しています。
ただし、Javaの配列を使う前に注意すべき点があります。それは、配列は使用前にサイズを宣言する必要があるという点です。さらに、一度宣言したサイズは後から簡単に変更できません。
そこで登場するのがArrayListクラスです。ArrayListはJavaのListインターフェースを実装したクラスで、開発者がサイズ変更可能な配列を作成できるようにします。ArrayListに要素を追加・削除すると、リストの容量は自動的に調整され、格納されている値の数に応じて変化します。本記事では、以降ArrayListクラスを単に「リスト」と呼びます。
以下は、JavaでArrayListを宣言する例です。
ArrayList<String> names = new ArrayList<>();
この例では、任意の数の文字列値を格納できるnamesというArrayListを宣言しています。
配列とArrayListの基本がわかったところで、次にこれらのデータ型間でデータを変換する方法を見ていきましょう。
リスト(ArrayList)を配列に変換する方法
Javaでは、list.toArray()メソッドを使うことで、リストを配列に変換できます。
ここで、退職後の投資ポートフォリオに含まれる銘柄リストがArrayListとして保存されている状況を想定してみましょう。今後新しい銘柄を追加する予定はないため、このデータを配列として保存することにしました。
銘柄リストをJavaの配列に変換するには、次のようなコードを使用します。
import java.util.List;
import java.util.Arrays;
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
List<String> portfolio = new ArrayList<String>();
portfolio.add("BAM");
portfolio.add("GOOGL");
portfolio.add("SBUX");
String[] newPortfolio = new String[portfolio.size()];
portfolio.toArray(newPortfolio);
System.out.println("Portfolio: " + Arrays.toString(newPortfolio));
}
}
このコードを実行すると、次の出力が得られます。
Portfolio: [BAM, GOOGL, SBUX]
それでは、コードの内容を詳しく見ていきましょう。
まず、プログラムに必要な3つのライブラリ(List、Arrays、ArrayList)をインポートしています。ListライブラリはJavaのListインターフェースを扱うために、ArrayListライブラリはArrayListを扱うために、そしてArraysライブラリはtoString()メソッドを使って配列をコンソールに出力するために必要です。
次に、文字列値を格納するportfolioという名前のArrayListを宣言し、add()メソッドを使って「BAM」「GOOGL」「SBUX」の3つの銘柄を追加しています。
続いて、newPortfolioという配列を作成し、同時にそのサイズも初期化します。ここでは、newPortfolio文字列配列の容量(格納できる値の数)を、portfolioリストの長さと同じに設定しています。つまり、この場合newPortfolio配列は3つの値を保持できることになります。
その後、toArray()メソッドを使ってportfolioのArrayListを配列に変換し、変数portfolio内に格納されていた値をnewPortfolio配列に代入します。最後に、Arrays.toString()を使ってnewPortfolio変数を読みやすい文字列形式に変換し、「Portfolio:」というメッセージとともにコンソールに出力しています。
配列をリスト(ArrayList)に変換する方法
逆に、Javaで配列をArrayListに変換するには、asList()メソッドを使用します。
先ほどの退職後ポートフォリオの例に戻りましょう。今度は、退職後ポートフォリオの銘柄が配列として保存されており、これをArrayListに変換したいとします。その場合、次のようなコードを使用します。
import java.util.Arrays;
import java.util.List;
class Main {
public static void main(String[] args) {
String[] portfolio = {"BAM", "GOOGL", "SBUX"};
List<String> newPortfolio = Arrays.asList(portfolio);
System.out.println("New portfolio: " + newPortfolio);
}
}
このコードを実行すると、次の出力が得られます。
New portfolio: [BAM, GOOGL, SBUX]
この例では、asList()メソッドを使って、portfolioという名前の退職後ポートフォリオ配列をリストに変換しています。コードの内容を確認してみましょう。
まず、配列をリストに変換するために必要なメソッドを含む、ArraysパッケージとListパッケージをインポートします。次に、退職後ポートフォリオの銘柄を格納した配列を持つportfolioという変数を宣言します。
その次の行では、Arrays.asList()メソッドを使ってportfolio配列の内容をリストに変換し、新しいリストをnewPortfolio変数に代入しています。最後に、「New portfolio:」というメッセージと、newPortfolioの内容をコンソールに出力します。
まとめ
Javaでは、toArray()メソッドを使ってリストを配列に変換し、asList()メソッドを使って配列をリストに変換することができます。
この記事では、サンプルコードを参考にしながら、JavaでArrayListを配列に変換する方法、および配列をArrayListに変換する方法を解説しました。また、ArrayListクラスと配列データ型の主な違いについても触れました。これであなたも、プロのJavaエンジニアのようにArrayListと配列を自由自在に相互変換できるようになったはずです!
-
【Android】配列をArrayListに変換する方法をサンプルコード付きで解説
このチュートリアルでは、Androidアプリ開発において配列(Array)をArrayListに変換する方法を、実際のサンプルコードとともにわかりやすく解説します。 配列からArrayListへの変換の基本 Javaでは、Arrays.asList()メソッドを使うことで、配列をリスト形式に変換できます。さらに、その結果をArrayListのコンストラクタに渡すことで、要素の追加や削除が自由に行える本格的なArrayListとして扱えます。 String[] array = new String[]{ANDROID, JSP, JAVA, STRUTS, HADOOP, JSF}; Arra
-
JavaのArrayIndexOutOfBoundsExceptionとは?発生原因と対処法を解説
配列とインデックスの基本 配列(Array)とは、同じ型の要素を固定サイズで順番に格納するためのデータ構造(コンテナ/オブジェクト)です。配列のサイズ(長さ)は生成時に決定され、後から変更することはできません。 配列内の各要素の位置は「インデックス(添字)」と呼ばれます。Javaの配列は0始まりのため、最初の要素はインデックス0、2番目の要素はインデックス1、というように順に番号が割り当てられます。 配列の各要素へは、「配列名[インデックス]」という形式の式を使ってアクセスします。 System.out.println(myArray[3]); // 1457 が出力される たとえばサイズ7