Javaで配列をリストに変換する方法
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); }
- 上記のソース コードからわかるように、List が宣言されている場合は、ジェネリック
- 参照型とは何ですか? 整数は参照型ですが、int とはどのような型ですか? Int は基本的なデータ型であり、参照型ではありません。 java
- 類推すると、他の 8 つの基本データ型 byte、short、int、long、float、double、char は参照型ではないのはこれが理由です。 8 つの基本データ型 List の仮パラメータとして使用できるデータ型はありません。ただし、String、array、class、interface は参照型であり、List の仮パラメータとして使用できるため、List が存在します。
- 上記の基礎知識を踏まえて、なぜ、次の 2 行のコードは次のとおりです。コードの 2 行目は正常にコンパイルされますが、3 行目はコンパイルされてエラーが報告されます?
int[] intArray1 = new int[1]; Arrays.asList(intArray1);//编译不报错 List<Integer> list1 = Arrays.asList( intArray1);//编译报错
回答:
- コードの 2 行目、Arrays.asList() メソッドの入力パラメータは参照型 int[] であり、戻り値の型は List
- である必要があります。3 行目では、型が異なるためエラーが報告されます。等号の両側が矛盾しています。左側: List
以上がJavaで配列をリストに変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

Java のアームストロング番号に関するガイド。ここでは、Java でのアームストロング数の概要とコードの一部について説明します。

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです
