1. ホーム
  2. java

[解決済み] Mapのキーとしてバイト配列を使用する

2023-07-05 13:09:50

質問

Mapのキーにバイト配列を使用することに問題はないでしょうか?また new String(byte[]) でハッシュ化し String を使う方が簡単ですが byte[] .

どのように解決するのですか?

問題点は byte[] はオブジェクト ID を使って equalshashCode というように

byte[] b1 = {1, 2, 3}
byte[] b2 = {1, 2, 3}

の中ではマッチしません。 HashMap . 3つの選択肢がありますね。

  1. でラップする。 String を使用することもできますが、その場合はエンコーディングの問題に注意する必要があります(byte -> String -> byteが同じバイトを与えることを確認する必要があります)。
  2. 使用する List<Byte> (を使用します(メモリが高価になることがあります)。
  3. 独自のラッピングクラスを作成し hashCodeequals でバイト配列の内容を使用します。