ホームページ  >  記事  >  Java  >  Javaで配列をリストに変換するにはどうすればよいですか? (コード例)

Javaで配列をリストに変換するにはどうすればよいですか? (コード例)

青灯夜游
青灯夜游転載
2019-11-25 15:32:0722567ブラウズ

配列型をコレクション型に変換する必要がある場合があります。後者の方がより強力なデータ構造であり、java.util.List には通常の配列ではサポートされない関数が多数あるためです。たとえば、List の組み込みメソッドを使用して、リストに特定の値が含まれているかどうかを簡単に検出できます。以下に、配列をリストに変換する方法の例をいくつか示します。

Javaで配列をリストに変換するにはどうすればよいですか? (コード例)

java.util.Arrays.asList()を介して配列をリストに変換 # Arrays クラスには、変換タスクに役立つ便利なメソッド asList があります。構文は次のとおりです:

public static <T> List<T> asList(T... a)

注: パラメータは配列である必要はなく、変数パラメータも使用できます。 lis

public class Test {
   public static void main(String[] args) {
      Listf7e83be87db5cd2d9a8a0b8117b38cd4 myList = Arrays.asList("Apple");
   }
}

を作成できます。上記のコードは、要素「Apple」を含むコレクションを作成します。また、次のようにすることもできます。
public class Test {
   public static void main(String[] args) {
      Listf7e83be87db5cd2d9a8a0b8117b38cd4 myList = Arrays.asList("Apple", "Orange");
   }
}

これは、「Apple」、「Orange」という 2 つの要素を含むセットを生成します。

これは可変パラメーターであるためです。配列を渡すと、配列の要素がパラメータとして認識されます。例:

public class Test {
   public static void main(String[] args) {
      String[] myArray = { "Apple", "Banana", "Orange" };
      Listf7e83be87db5cd2d9a8a0b8117b38cd4 myList = Arrays.asList(myArray);
      for (String str : myList) {
         System.out.println(str);
      }
   }
}

このようにして、String コレクションが作成されます。配列 myArray が追加されます。 myList コレクションには 3 つの要素があります。出力は次のとおりです:

Apple
Banana
Orange

trapこのメソッドにはいくつかの問題があります。渡された配列in はプリミティブ型の配列ではなく、オブジェクトの配列である必要があります。例:

public class Test {
   public static void main(String[] args) {
      int[] myArray = { 1, 2, 3 };
      List myList = Arrays.asList(myArray);
      System.out.println(myList.size());
   }
}

コード出力は 1 です。なぜ? asList メソッドはオブジェクトの可変個引数パラメーターを予期しますが、渡されるパラメーターはプリミティブ型の配列であるため、配列コレクションを作成します。したがって、このコレクションの唯一の要素は myArray です。したがって、

myList.get(0)

は myArray と同じオブジェクトを返します。

asList() によって作成されたオブジェクトは固定サイズです。 asList() メソッドによって返されるリスト オブジェクトは固定サイズであり、これ以上は収容できません。たとえば、多数の要素があります。

public class Test {
   public static void main(String[] args) {
      String[] myArray = { "Apple", "Banana", "Orange" };
      Listf7e83be87db5cd2d9a8a0b8117b38cd4 myList = Arrays.asList(myArray);
      myList.add("Guava");
   }
}

出力は次のとおりです。

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.add(AbstractList.java:148)
    at java.util.AbstractList.add(AbstractList.java:108)
    at Test.main(Test.java:8)

myList は固定長であるため、これ以上要素を追加することはできません。

このメソッドによって返される List オブジェクトは、java.util パッケージの ArrayList ではなく、Array 内の ArrayList 型であるためです。このクラスは add、revmove、clear メソッドを実装していないため、コレクション構造を変更する呼び出しは失敗します。

基本的な配列型を List に変換します上記のように。基本型の配列を asList メソッドに渡しても機能しません。サードパーティ ライブラリを導入しない解決策は、Java8 ストリームを渡すことです。例は次のとおりです:

public class Test {
   public static void main(String[] args) {
      int[] intArray = { 5, 10, 21 };
      List myList = Arrays.stream(intArray).boxed()
            .collect(Collectors.toList());
   }
}

配列の各要素は変換されますint から Integer 型 (ボックス化) に変換すると、配列は List 型に変換されます。

配列を要素を追加できるリストに変換します上記のトラップ セクションで説明したように、Arrays.asList() メソッドは次のことを行います。要素の追加または削除はサポートされていません。これを実行したくない場合は、次のような代替方法があります。

public class Test {
   public static void main(String[] args) {
      String[] myArray = { "Apple", "Banana", "Orange" };
      Listf7e83be87db5cd2d9a8a0b8117b38cd4 myList = new ArrayListf7e83be87db5cd2d9a8a0b8117b38cd4(Arrays.asList(myArray));
      myList.add("Guava");
   }
}

このコードは、新しい ArrayList オブジェクトを明示的に作成し、それに Arrays.asList の結果を追加します。 ArrayList を作成したためです。したがって、削除制限は追加されず、上記のコードの実行が終了するまでに 4 つの要素が存在します。コードの実行時に例外がスローされることを期待しないでください。

配列グループを自分でリストに変換する 問題を解決するには、独自の実装ソリューションを使用した方がよい場合があります。以下は、Java 配列をリストに変換する簡単な例です。

public class Test {
   public static void main(String[] args) {
      String[] myArray = { "Apple", "Banana", "Orange" };
      Listf7e83be87db5cd2d9a8a0b8117b38cd4 myList = new ArrayListf7e83be87db5cd2d9a8a0b8117b38cd4();
      for (String str : myArray) {
         myList.add(str);
      }
      System.out.println(myList.size());
   }
}

コードの期待される出力は 3 です。ロジックの実行後にコレクションには 3 つの要素があるためです。

私たちのコードの欠点は、コードが長くなり、車輪の再発明をしていることです。利点は、ニーズの変化に応じて適応してカスタマイズできることです。例: 次のコードでは、各要素がリストに 2 回追加されます。

public class Test {
   public static void main(String[] args) {
      String[] myArray = { "Apple", "Banana", "Orange" };
      Listf7e83be87db5cd2d9a8a0b8117b38cd4 myList = new ArrayListf7e83be87db5cd2d9a8a0b8117b38cd4();
      for (String str : myArray) {
         myList.add(str);
         myList.add(str);
      }
      System.out.println(myList.size());
   }
}

配列内のすべての要素が 2 回追加されるため、出力は 6 になります。 String 配列を Listc0f559cc8d56b43654fcbe4aa9df7b4a に変換する別の例を次に示します。

public class Test {
   public static void main(String[] args) {
      String[] myArray = { "5", "6", "7" };
      List<Integer> myList = new ArrayList<Integer>();
      for (String str : myArray) {
         myList.add(Integer.valueOf(str));
      }
   }}

配列内の各 String を解析し、対応する Integer に変換します。結果のリストには、変換されたすべての整数が含まれます。

推奨学習:

Java ビデオ チュートリアル

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

声明:
この記事はjavadevnotesで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。