2016-05-26 12 views
0

配列のHashMapを作成したいのですが、配列をすべて固定サイズ(8)にします。どうすればいい?特定のサイズの配列のHashMap

私が試してみました:

HashMap<Boolean[8],Boolean[8]> map = new HashMap<>(); 

をし、動作しないようですが、それはちょうど私が間違って何をやっている私は8

を削除したいですか?

+0

このC#のですか?言語タグを追加してください。 – Blorgbeard

+0

それはJavaです。私はそのタグを付け加えた。 – JBWar

+0

@dasblinkenlight oops。その固定された今。 – JBWar

答えて

1

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の中でキーとしてコレクションを使用する必要がある場合、あなたはに基づいてequalshashCodeメソッドを実装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に制限されていて、それより劣っている場合は、数値型を使用してそれを表すことができます。

  • バイト/バイト:8ビット
  • 短/短:16ビット
  • 単に0

    Javaの数値型のサイズのリマインダーと1とfalsetrueを表します

  • INT /整数:32ビット
  • ロング/ロング:64ビット
0

Boolean[8]は、パラメータタイプではないBoolean[]です。

関連する問題