「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Javaでマップキーとして使用するためにint[]をInteger[]に変換するにはどうすればよいですか?

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

2024 年 11 月 3 日に公開
ブラウズ:948

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 を使用:

int[] data = {1,2,3,4,5,6,7,8,9,10};

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

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

IntStream を使用した同様のアプローチ:

Integer[] primitiveToBoxed = IntStream
        .of(data)
        .boxed()
        .toArray(Integer[]::new);

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

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

  • オーバーロード: 整数は -128 から 127 までの値をキャッシュするため、より大きなデータセットで競合が発生する可能性があります。
  • パフォーマンス オーバーヘッド: Integer[] は新しい整数を作成しますint 値ごとにオブジェクトを作成するため、追加のオーバーヘッドが発生します。

代替オプション

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

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

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

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3