У меня проблемы со значениями разных ключей в хэш-карте, которую я создал. Почему-то значения перезаписываются самой последней добавленной стоимостью.
Например:
map.put("String1", "123")
map.put("String2", "456")
System.out.println(map.get("String1")); //would print 456
Моя хэш-карта:
Map<String, Testing> systems = new HashMap<>();
Тестирование:
class Testing {
private double[] ap;
private double[] dcg;
private double[] ndcg;
public Testing(double[] _ap, double[] _dcg, double[] _ndcg){
ap = _ap;
dcg = _dcg;
ndcg = _ndcg;
}
public double[] getAp(){
return ap;
}
public double[] getDcg(){
return dcg;
}
public double[] getNdcg(){
return ndcg;
}
}
Вот проблема (это файл):
systems.put(f.getName(), new Testing(ap, dcg, ndcg));
if(f.getName().equals("input.Flab9atdnN.gz") ||
f.getName().equals("input.apl9lt.gz")) {
System.out.println(f.getName() + ": " +
systems.get(f.getName()).getAp()[5]);
}
if(f.getName().equals("input.Flab9atdnN.gz")) {
System.out.println(f.getName().equals("input.Flab9atdnN.gz"));
double temp = systems.get("input.apl9lt.gz").getAp()[5];
double temp2 = systems.get("input.Flab9atdnN.gz").getAp()[5];
System.out.println("input.Flab9atdnN.gz: " + temp2 + ". input.apl9lt.gz:
" + temp);
}
Первый вывод дает разные значения для ключа «input.Flab9atdnN.gz» и ключа «input.apl9lt.gz».
System.out.println(f.getName() + ": " + systems.get(f.getName()).getAp()
[5]);
Последний оператор печати дает то же значение для ключа "input.Flab9atdnN.gz", но дает ключ "input.apl9lt.gz" key "input.Flab9atdnN.gz". Ключ «input.Flab9atdnN.gz» добавляется в хэш-карту после ключа «input.apl9lt.gz», таким образом, все, что добавляется после ключа «input.Flab9atdnN.gz», будет также давать значение этого нового ключа для «input.Flab9atdnN.gz» .
double temp = systems.get("input.apl9lt.gz").getAp()[5];
double temp2 = systems.get("input.Flab9atdnN.gz").getAp()[5];
System.out.println("input.Flab9atdnN.gz: " + temp2 + ". input.apl9lt.gz: " +
temp);
Есть какая-нибудь подсказка, почему это так и возможный обходной путь? Я пытался сделать что-то подобное со списками, и у меня возникла та же проблема. Я также пытался не использовать Тестирование.
Спасибо.
Редактировать (для входов):
input.apl9lt.gz
+0,160837098024862
+0,03075251487336594
+0,22437008086531643
0,1971910732696186
+0,26775040012743095
9.256258391747239E-4
0,1348288884102969
+0,04098977989693765
+0,22076261792825694
+0,14351330413359978
0,4326923076923077
+0,07127127472804279
4.552325182365065E-5
+0,010058991520632703
+0,013241228159087674
+0,010137295467368818
+0,16308220490382738
+0,013974532767649097
0,1591821903406855
+0,03546054590978735
+0,017811035142771457
+0,09931683119953653
+0,0012300123001230013
3.2100667693888034E-5
+0,13463869607114665
+0,056660951442691745
+0,009024064171122994
+0,00111158621285874
+0,19147531389263409
6.058415656054187E-4
+0,15122464967762936
+0,017945455244915694
+0,24100308685261787
6.295914132164171E-4
+0,41666666666666663
+0,16054778554778554
+0,12606805722666745
+0,03122700118062138
+0,05840908368719257
+0,06151876506910154
8.167932696234583E-5
+0,48663786619303134
+0,0017420658249683476
+0,20520161886380303
7.111269849728675E-5
0,1157176972265951
+0,28587824256374156
+0,032836748137528377
+0,04182754182754183
+0,02944176265259386
input.Flab9atdnN.gz
+0,4550531747779656
+0,11354712610736152
0,4465970245283123
+0,39990864084973815
+0,23410193071725469
8.08015513897867E-5
+0,11287817139653589
+0,02255268670973833
+0,30038335608865446
+0,21267974099603318
0,6041666666666666
+0,15726821262566176
+0,15690222729126874
1.5053439710973956E-4
0,0843584401155248
0,5027027027027027
0,1873237718924946
+0,005660813678763912
+0,012321170992537366
0,0529994153272247
+0,04489848129896188
+0,016508461433080466
0.0
1.0736065674698053E-4
+0,07164253590778259
+0,14083889573189318
+0,024676040805073064
+0,16099898114516484
+0,16509562037628656
+0,06488409960391041
+0,22263263699157246
0,0568843663526689
0,4175364417422477
0,1106842493991619
+0,15555555555555556
0,5416666666666666
0,4654817731306396
0,0930344930767678
+0,344114561968089
0,1882981402539536
+0,11698973634619976
0,4533746137676584
0,3389765988389732
+0,475199277730597
+0,08708693608991427
+0,34790332410690694
+0,035929746042875826
+0,08056424630498706
+0,20352743561030237
+0,12758565977230674
Прочитайте их в двойной массив (размер 50). Чтобы использовать класс Testing, просто удалите dcg и ndcg.