ホームページ  >  記事  >  Java  >  Javaでマップキーとして使用するためにint[]をInteger[]に変換するにはどうすればよいですか?

Javaでマップキーとして使用するためにint[]をInteger[]に変換するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-30 11:40:40680ブラウズ

How to Convert int[] to Integer[] for Use as Map Keys in Java?

Java でのマップ キーの int[] から Integer[] への変換: 総合ガイド

Java では、マップ キーは参照の等価性を必要としますが、これは達成できませんint[] のようなプリミティブ型を使用します。 int[] 配列を操作し、マップ内のキーとして使用する必要がある場合は、それらを適切なオブジェクト タイプに変換する必要があります。この変換のさまざまなオプションを見てみましょう。

方法 1: Arrays.stream().boxed().toArray()

Java 8 では、int[] を Integer[ に変換するための簡潔なメソッドが導入されました。 ] ストリーム API を使用する:

<code class="java">int[] data = {1,2,3,4,5,6,7,8,9,10};

Integer[] primitiveToBoxed = Arrays
        .stream(data)
        .boxed()
        .toArray(Integer[]::new);</code>

方法 2: IntStream.of().boxed().toArray()

IntStream を使用する同様のアプローチ:

<code class="java">Integer[] primitiveToBoxed = IntStream
        .of(data)
        .boxed()
        .toArray(Integer[]::new);</code>

マップ キーに関する考慮事項

Integer[] はキーとして機能しますが、次の理由により理想的ではない可能性があります。

  • オーバーロード: 整数は、次の間の値をキャッシュします。 -128 ~ 127 で、より大きなデータセットでは潜在的な衝突が発生します。
  • パフォーマンス オーバーヘッド: Integer[] は、各 int 値に対して新しい Integer オブジェクトを作成し、追加のオーバーヘッドが発生します。

代替オプション

パフォーマンスとキーの一意性を向上させるには、次の使用を検討してください:

  • カスタム オブジェクト: int[] をカプセル化して実装するカスタム クラスを作成します。
  • Longs: Long 値は整数を表すことができるため、Integer[] よりも優れたパフォーマンスで Maps のキーとして使用できます。
  • >
  • 外部ライブラリ: プリミティブ型をパフォーマンスの高い方法で処理する特殊なコレクションについては、Apache Commons Collections Library または Google Guava を調べてください。

最良のアプローチは次のものに依存することを覚えておいてください。データセットのサイズとパフォーマンス要件。適切な手法を選択すると、データセット内の int[] の組み合わせの頻度を効率的に追跡できます。

以上がJavaでマップキーとして使用するためにint[]をInteger[]に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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