Javaには、クラスがあります:
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}
2回作成されます.1回目Key
はコンストラクターが呼び出されたとき、次にそのコンストラクター内です。
何に使うのHashMap<int[], int[]> map
かわからないので使えません。そのため、キーをクラス内にラップします。hashCode
int[]
int[]
Key
引数配列 (サイズが異なる可能性があります) を一度だけ作成するにはどうすればよいですか?
私はこの解決策が好きではありません:
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;
}
一般に、引数配列はさまざまなサイズになる可能性があるためです。