Javaでリストを配列に変換するにはどうすればよいですか?

青灯夜游
リリース: 2020-11-02 15:00:33
オリジナル
100444 人が閲覧しました

Java でリスト コレクションを配列に変換する方法: 1. パラメーターなしの toArray メソッドを使用します (構文形式は「Object[] toArray();」です)。 2. ジェネリックスをサポートする toArray メソッドを使用します。構文形式は「T[] toArray(T[] a);」です。

Javaでリストを配列に変換するにはどうすればよいですか?

関連する推奨事項: 「Java ビデオ チュートリアル

Java では、よく次のような問題が発生します。リストと配列の間の変換が必要なシナリオに。では、リストを配列に変換するにはどうすればよいでしょうか?次の記事で紹介します。

List を配列に変換するには、List の toArray() または toArray(T[] a) メソッドを使用できます。

リストを配列に変換する

リストを配列に変換するには、toArray メソッドを呼び出します。

次の 2 つがあります。オーバーロードはここにあります メソッド、

通常は、ジェネリック パラメーターを持つ 2 番目のメソッドを使用します:

Object[] toArray();
<T> T[] toArray(T[] a);
ログイン後にコピー

2.1. パラメーターのない toArray メソッド

Object[] toArray();
ログイン後にコピー

このメソッドは直接リスト変換します。 Object[]配列に。

Java 初心者はこのメソッドを使用するのが好きです。

パラメータなしで使用すると非常に便利です。

コードのコンパイル時にエラーは発生しません。

間違った使用例 コードは次のとおりです:

List<String> strList = new ArrayList<>();
strList.add("list-a");
strList.add("list-b");
String[] strArray = (String[]) strList.toArray();
ログイン後にコピー

結果が実行されるとすぐにエラーが直接報告され、

は Object[] を String[] に変換できません:

Exception in thread "main" java.lang.ClassCastException: 
[Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
ログイン後にコピー

正しい使用コードは次のとおりです:

List<String> strList = new ArrayList<>();
Object[] strArray = strList.toArray();
ログイン後にコピー

通常は役に立たない Object[] を取得しました。

2.2. ジェネリック toArray メソッドのサポート

<T> T[] toArray(T[] a);
ログイン後にコピー

このメソッドは型 T の配列を受け取ります。ジェネリック型パラメータ。

int[] 型の配列を使用している場合、

int[] を Integer[] に置き換える必要があります。

使用するサンプル コードは次のとおりです:

List<String> strList = new ArrayList<>();
strList.add("list-a");
strList.add("list-b");
String[] strArray = strList.toArray(new String[strList.size()]);
ログイン後にコピー

2.3. toArray メソッドの入力パラメーターの配列サイズ

次のコードの場合、

初期化された String 配列

のサイズとリスト strList.size() のサイズとの関係、および

が戻り値に与えるさまざまな影響を分析します。 :

List<String> strList = new ArrayList<>();
strList.add("list-a");
strList.add("list-b");
String[] strArray1 = new String[size];
String[] strArray2 = strList.toArray(strArray1);
ログイン後にコピー

2.3 .1.size < strList.size()

size=0 を設定します、

は strList.size()=2 より小さいです、

コード変更部分は次のとおりです。

String[] strArray1 = new String[0];
ログイン後にコピー

返された strArray2 と strArray1 は同じオブジェクトではありません。

2.3.2.size = strList.size()

今度は、size=strList.size(),

コード変更部分は次のとおりです。

String[] strArray1 = new String[strList.size()];
ログイン後にコピー

返される strArray2 と strArray1 は同じオブジェクトです。

したがって、次の 2 つのコードは同等です。

取得された strArray は、期待される結果です:

String[] strArray = strList.toArray(new String[strList.size()]);
String[] strArray = new String[strList.size()];
strList.toArray(strArray);
ログイン後にコピー

2.3.3.size > strList.size( )

ここで size=strList.size() 1,

コード変更部分は次のとおりです:

String[] strArray1 = new String[strList.size()+1];
ログイン後にコピー
返される strArray2 と strArray1 は同じオブジェクトです

ただし、配列の最後の要素は null です。

配列内の要素がリストよりも多い場合、

リストがコピーされた直後の配列の末尾null に設定されます。

つまり、strArray1[strList.size()]=null,

これは、呼び出し元が配列の実際の長さを判断するのに役立ちます。

strList.size() 2 初期化配列を使用する場合、

配列の最後から 2 番目の要素は null です。

プログラミング関連の知識について詳しくは、

プログラミング教育

をご覧ください。 !

以上がJavaでリストを配列に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート