序文:
この記事では、ArrayをJavaのリストに変換する3つの状況の利点と欠点の比較、アプリケーションシナリオの比較、およびプログラマーがしばしば行う型変換エラーの原因の分析を紹介します。
1.最も一般的な方法(必ずしも最高ではない)
Arrays.asList(strArray)を介して配列をリストに変換した後、リストを追加または削除することはできません。確認して変更することしかできません。そうしないと、例外がスローされます。
キーコード: List list = Arrays.asList(strArray);
private void testarraycasttolisterror(){string [] strarray = new String [2];リストlist = arrays.aslist(strarray); //変換されたリストリストにデータを挿入します。Add( "1"); System.out.println(list); }実行結果:
スレッド「Main」Java.lang.UnsupporteDoperationExceptionの例外
java.util.abstractlist.add(abstractlist.java:148)
java.util.abstractlist.add(abstractlist.java:108)
com.darwin.junit.calculator.testarraycasttolist(calculator.java:19)で
com.darwin.junit.calculator.main(calculator.java:44)で
プログラムはlist.add(“1”)に例外をスローします。 UnsportedoperationException。
理由分析:
Arrays.asList(strArray)の返品値は、 java.util.Arraysクラスではない、プライベートな静的内部クラスjava.util.Arrays.ArrayList java.util.ArrayListです。 java.util.Arrays.ArrayListクラスには、 set() 、 get() 、 contains() 、およびその他のメソッドがset add()またはremove remove()をremaing()の方法を持っていないため、 add()を呼び出すとエラーが発生します。
使用法シナリオ: Arrays.asList(strArray)メソッドは、配列をリストに変換した後にのみ使用できます。値を追加または削除する必要はなく、読み取るデータソースとしてのみ使用されます。
2。配列がリストに変換された後、追加、削除、変更、検索の方法をサポートします。
ArrayList Constructorを介して、 java.util.Arrays.ArrayListからjava.util.ArrayListにArrays.asList(strArray)の返品値を変換します。
キーコード: ArrayList<String> list = new ArrayList<String>(Arrays.asList(strArray)) ;
private void testarraycasttolistright(){string [] strarray = new String [2]; ArrayList <String> list = new ArrayList <String>(arrays.Aslist(Strarray)); list.add( "1"); System.out.println(list); }実行結果:要素「1」が正常に追加されました。
[null、null、1]
使用法のシナリオ:配列をリストに変換した後、リストを追加、削除、変更、チェックする必要があります。リスト内のデータの量が大きくない場合は、使用できます。
3。コレクションツールクラスCollections.Addall()メソッド(最も効率的)
Collections.addAll(arrayList, strArray)を介して変換し、配列の長さに応じて同じ長さのリストを作成し、 Collections.addAll()メソッドを介して配列の要素をバイナリに変換し、リストに追加します。これは最も効率的な方法です。
キーコード:
arrayList <string> arrayList = new ArrayList <String>(strarray.length); collections.addall(arrayList、strarray);
テスト:
private void testarraycasttolistefive(){string [] strarray = new String [2]; ArrayList <String> arrayList = new ArrayList <String>(strarray.length); collections.addall(arraylist、strarray); arraylist.add( "1"); System.out.println(arrayList); }実行結果:要素「1」を正常に追加しました。
[null、null、1]
使用法のシナリオ:配列をリストに変換した後、リストを追加、削除、変更、チェックする必要があります。リストのデータボリュームが膨大な場合、それを使用することが推奨され、操作速度が向上します。
注: Collections.addAll()メソッドのソースコードを添付してください。
public static <t> boolean addall(collection <?super t> c、t ... elements){boolean result = false; for(t element:element)result | = c.add(element); // result and c.add(element)bitwise or操作、および結果を返す結果に値を割り当てます。 }要約します
上記は、この記事のコンテンツ全体です。この記事の内容には、すべての人の研究や仕事に特定の参照値があることを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。