在Java中,我有一個類:HashMap對象鍵
public static class Key {
int[] vector = null;
private int hashcode = 0;
Key (int[] key) {
vector = new int[key.length];
// here is the problem
System.arraycopy(key, 0, vector, 0, key.length);
}
public int hashCode() { ... }
public boolean equals(Object o) { ... }
}
充當在HashMap<Key, int[]> map
的關鍵。在代碼中,我做的事:
// value int[] array is filled before
map.put(new Key(new int[] {5, 7}), value);
但是,這將創建一個參數數組{5, 7}
兩次 - 當Key
構造函數被調用一次,然後該構造函數裏面。
我不能使用HashMap<int[], int[]> map
,因爲那麼不清楚hashCode
將用於int[]
。所以我在Key
類中封裝了int[]
密鑰。
如何才能創建一個參數數組(可以是不同的大小)一次?
我不喜歡這樣的解決方案:
map.put(new Key(5, 7), value);
// and rewrite the constructor
Key (int a1, int a2) {
vector = new int[2];
vector[0] = a1;
vector[1] = a2;
}
因爲通常一個參數陣列可以是各種尺寸。
爲什麼你不能分配數組到矢量成員?像這個Key(int [] keys){this。vector = keys; }解決方案的缺點是可以從該類之外修改關鍵值。 – Delta 2013-03-18 01:28:52