zu sagen ich habe ein Problem, dass ich nicht in der Lage bin zu verstehen ..HashMap Werte ändern, ohne sie zu
ich ein HashMap called wholeSetHistory
bin Gebäude.
Ich baue eine HashMap mit den gleichen Schlüsseln und Werten, die wholeSetHistory hat, genannt wholeSetHistoryT
.
In ähnlicher Weise erstelle ich zwei HashMaps called wholeSetRates, wholeSetRatesT
Alle HashMaps haben dieses Format HashMap<String, HashMap<String, Double>>
.
Ich habe diese Funktion, die ein Zug
public void createTrainSet(HashMap<String, HashMap<String, Double>> wholeSetRates, HashMap<String, HashMap<String, Double>> wholeSetHistory){
for(String fbid : wholeSetHistory.keySet()){
ArrayList<String> locsBe = new ArrayList<>();
HashMap<String, Double> locss = wholeSetHistory.get(fbid);
HashMap<String, Double> locss2 = wholeSetRates.get(fbid);
for(String loc : locss.keySet()){
if(locss.get(loc)==1.0){
locsBe.add(loc);
}
}
ArrayList<Integer> randomNums = new ArrayList<>();
for(int i=0; i<2; i++){
Random rn = new Random();
int randomNum;
do{
int range = locsBe.size() - 1 + 1;
randomNum = rn.nextInt(range);
}while(randomNums.contains(randomNum));
randomNums.add(randomNum);
locss.put(locsBe.get(randomNum), 0.0);
locss2.put(locsBe.get(randomNum), 0.0);
wholeSetHistory.put(fbid, locss);
wholeSetRates.put(fbid, locss2);
}
randomNums.clear();
}
}
Also, ich es wie dieses
(... creation of wholeSetHistory, wholeSetHistoryT, wholeSetRates, wholeSetRatesT)
System.out.println(wholeSetHistory.get("1"));//1
createTrainSet(wholeSetRatings, wholeSetHistory, nearUserIDWithVisitedTrueValues);
bin mit später eingestellt erstellt, das bedeutet, dass ich auf die Funktion als Paramater bin vorbei nur wholeSetHistory
Obwohl ich später
System.out.println(wholeSetHistory.get("1"));//2
System.out.println(wholeSetHistoryT.get("1"));//3
Dieses, was passiert:
Die Werte, die auch in wholeSetHistory Änderungen in wholeSetHistoryT ändert! Zum Beispiel, Drucke 2 und 3 sind die gleichen (!) Und anders als 1.
Jede Hilfe ist mych geschätzt.
Willst du damit sagen, dass du die gleichen Referenzen in zwei verschiedene Karten legst und wenn du sie in einer Karte änderst, ändert sie sie auch in der anderen? – ChiefTwoPencils
ja! Die beiden Paare von Hashmaps haben die gleichen Schlüssel und Werte. –
Wenn Sie den Wert eines Verweises auf ein Objekt in einer Karte ändern, wird dies auch in der anderen Karte entsprechend geändert. Probieren Sie einen Beispielcode aus, um zu testen, ob es tatsächlich so ist. –