ホームページ >Java >&#&チュートリアル >Java の Arrays.asList() メソッドの制限は何ですか?また、プリミティブ配列をリストに変換するときにそれらを克服するにはどうすればよいですか?

Java の Arrays.asList() メソッドの制限は何ですか?また、プリミティブ配列をリストに変換するときにそれらを克服するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-20 16:52:18651ブラウズ

What are the limitations of Java's Arrays.asList() method, and how can I overcome them when converting primitive arrays to lists?

Arrays.asList() の動作とその制限について

配列やコレクションを扱うとき、配列を次のように変換したいと思うのが一般的です。操作を容易にするためのリスト。この目的には、Java の Arrays.asList() メソッドがよく使用されます。ただし、このメソッドが期待どおりに動作しない可能性がある特定のシナリオがあります。

Arrays.asList() が異なるリストを返す理由

次のコードを検討してください。

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); // Works
int[] ints = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.asList(ints); // Returns List<int[]>

最初の例では、Arrays.asList() はリスト指定された整数要素が含まれます。ただし、2 番目の例では List が返されます。この違いは、次の理由で発生します。

  • Arrays.asList() は、配列または個々の要素のリストを渡すために使用できる varargs パラメーターを受け入れます。
  • 最初の例では、個々の整数要素を渡します。メソッドはそれを Integer オブジェクトとして解釈します。
  • 2 番目の例では、int[] を渡します。このメソッドは単一のオブジェクトとして処理されます。

オートボクシングの制限

Java のオートボクシング機能は、プリミティブ型を対応するラッパー型に自動的に変換します (例: int から Integer)。 。ただし、この変換は個々の要素に対してのみ発生し、プリミティブの配列に対しては発生しません。したがって、int[] を Arrays.asList() に渡す場合、オートボクシングは行われず、メソッドは List を返します。

Solutions

この動作を修正し、List を取得するには、 int[] からは、3 つのオプションがあります:

  • ヘルパー ライブラリを使用する: Guava のようなライブラリは、さまざまなタイプの配列をリストに変換するメソッドを提供します。たとえば、com.google.common.primitive.Ints.asList() を使用して List を作成できます。 int[].
  • 新しい配列を作成します: int[] の要素を含む新しい Integer[] を作成し、その配列を Arrays.asList() に渡すことができます。 .
  • 反復とボックス: int[] を手動で反復し、それぞれをボックス化できます。要素をリストに追加します。

以上がJava の Arrays.asList() メソッドの制限は何ですか?また、プリミティブ配列をリストに変換するときにそれらを克服するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。