Я использую этот класс, как мой ключ к HashMap сHash Карта объекта Key
public class Design {
private double[] factors = null;
public double[] getFactors() {
return factors;
}
public void setFactors(double[] factors) {
this.factors = factors;
}
public Design(double[] factors) {
this.factors = factors;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + Arrays.hashCode(factors);
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (!(obj instanceof Design))
return false;
Design other = (Design) obj;
if (!Arrays.equals(factors, other.factors))
return false;
return true;
}
я добавил значения для сопоставления с помощью цикла
public static void main(String[] args) {
Map<Design, Double> map = new HashMap<Design, Double>();
double[] dbl = new double[2];
for(int i=0; i<5; i++){
for(int j=0; j<2; j++){
System.out.println(j+i);
dbl[j] = j+i;
}
Design des = new Design(dbl);
map.put(des, Double.valueOf(i));
}
for(Design d: map.keySet()){
System.out.println(d.getFactors()[0] + "\t" + d.getFactors()[1]);
}
for(double d: map.values()){
System.out.println(d);
}
}
перекрываться hasCode() и Equals() проблема находится в ключевых значениях. Он отобразил последний добавленный ключ.
4.0 5.0
4.0 5.0
4.0 5.0
4.0 5.0
4.0 5.0
Где я ошибаюсь?
спасибо ... обходной путь, чтобы добавить ДВМ = новый двойной [2]; перед назначением новых значений массиву ... –