1. 最も一般的な方法 (必ずしも最適であるとは限りません)
#Arrays.asList(strArray) メソッドを使用して、配列をリストに変換した後は、リストの追加や削除はできません。の場合は、確認と変更のみが可能で、それ以外の場合は例外がスローされます。 キー コード: List list = Arrays.asList(strArray);private void testArrayCastToListError() { String[] strArray = new String[2]; List list = Arrays.asList(strArray); //对转换后的list插入一条数据 list.add("1"); System.out.println(list); }
Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.add(AbstractList.java:148) at java.util.AbstractList.add(AbstractList.java:108) at com.darwin.junit.Calculator.testArrayCastToList(Calculator.java:19) at com.darwin.junit.Calculator.main(Calculator.java:44)
2. 配列を List に変換した後、追加、削除、変更、検索のメソッドがサポートされます
ArrayList のコンストラクターを通じて、戻り値Arrays.asList(strArray) の が java から .util.Arrays.ArrayList に変更され、 java.util.ArrayList に変換されます。 キーコード:ArrayListprivate void testArrayCastToListRight() { String[] strArray = new String[2]; ArrayList<String> list = new ArrayList<String>(Arrays.asList(strArray)) ; list.add("1"); System.out.println(list); }
[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 testArrayCastToListEfficient(){ String[] strArray = new String[2]; ArrayList< String> arrayList = new ArrayList<String>(strArray.length); Collections.addAll(arrayList, strArray); arrayList.add("1"); System.out.println(arrayList); }
[null, null, 1]
public static <T> boolean addAll(Collection<? super T> c, T... elements) { boolean result = false; for (T element : elements) result |= c.add(element);//result和c.add(element)按位或运算,然后赋值给result return result; }
方法 1: 追加と削除はサポートされていません
Integer[] intArray1 = new Integer[2]; List<Integer> list1 = Arrays.asList(intArray1); System.out.println(list1);
[null, null]
方法 2: 追加と削除をサポートします
Integer[] intArray2 = new Integer[2]; List<Integer> list2 = new ArrayList<Integer>(Arrays.asList(intArray2)) ; list2.add(2); System.out.println(list2);
[null, null, 2]
方法 3: 追加と削除をサポートします。大量のデータに対して最も効率的です
Integer[] intArray3 = new Integer[2]; List<Integer> list3 = new ArrayList<Integer>(intArray3.length); Collections.addAll(list3, intArray3); list3.add(3); System.out.println(list3);
[null, null, 3]
## に変換されます。 #エラーが発生しやすい点: 考えられるエラーは次のように変換されます:
int[] intArray1 = new int[2]; List<Integer> list1 = Arrays.asList(intArray1);//此处报错!!!
エラーの理由: 等号の両側の型が矛盾しており、当然コンパイルは失敗します。分析については以下を参照してください。
それでは、配列を宣言するとき、int[] または Integer[] を使用する必要がありますか?どちらの宣言メソッドで正しく List に変換できますか?
回答: 変換には Integer[] のみを使用できます。 List
その理由は次のように分析されます。
Java ソース コード内の List の定義を見てみましょう (ソース コードが理解できなくても心配しないでください)。非常に簡単に理解できるので、分析してみましょう):
public interface List<E> extends Collection<E> {省略…}
public static List asList(T... a) { return new ArrayList<>(a); }
int[] intArray1 = new int[1]; Arrays.asList(intArray1);//编译不报错 List<Integer> list1 = Arrays.asList( intArray1);//编译报错
回答:
以上がJavaで配列をリストに変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。