配列のHashMapを作成したいのですが、配列をすべて固定サイズ(8)にします。どうすればいい?特定のサイズの配列のHashMap
私が試してみました:
HashMap<Boolean[8],Boolean[8]> map = new HashMap<>();
をし、動作しないようですが、それはちょうど私が間違って何をやっている私は8
を削除したいですか?
配列のHashMapを作成したいのですが、配列をすべて固定サイズ(8)にします。どうすればいい?特定のサイズの配列のHashMap
私が試してみました:
HashMap<Boolean[8],Boolean[8]> map = new HashMap<>();
をし、動作しないようですが、それはちょうど私が間違って何をやっている私は8
を削除したいですか?
Boolean[8]
をタイプとして使用しようとしていますが、正しいタイプはBoolean[]
です。しかし、hashCode
とのJava配列のメソッドが参照を使用して実装されているため、これはおそらくあなたが期待することはしません。
それはここで何を意味するかの簡単な例:
int[] a = new int[] {0};
int[] b = new int[] {0};
System.out.println(a.hashCode());
// 705927765 ; changes every time
System.out.println(b.hashCode());
// 366712642 ; changes every time
System.out.println(a.equals(b));
// false
をので、あなたはHashMapの中でキーとしてコレクションを使用する必要がある場合、あなたはに基づいてequals
とhashCode
メソッドを実装List
を、使用することを検討すべきです値は含まれています。
List<Integer> a = new ArrayList<>();
List<Integer> b = new ArrayList<>();
a.add(new Integer(0));
b.add(new Integer(0));
System.out.println(a.hashCode());
// 31
System.out.println(b.hashCode());
// 31
System.out.println(a.equals(b));
// true
さて、あなたはBoolean
の配列を使用しようとしているあなたの正確な例に関連します。配列のサイズが64に制限されていて、それより劣っている場合は、数値型を使用してそれを表すことができます。
Javaの数値型のサイズのリマインダーと1とfalse
でtrue
を表します
Boolean[8]
は、パラメータタイプではないBoolean[]
です。
このC#のですか?言語タグを追加してください。 – Blorgbeard
それはJavaです。私はそのタグを付け加えた。 – JBWar
@dasblinkenlight oops。その固定された今。 – JBWar