2014-02-09 15 views
14

Ich brauche etwas Hilfe, ich lerne von mir selbst, wie man mit Karten in Java Ando heute ich habe versucht, die Summe der Werte aus einer Hashmap, aber jetzt Im stecken.Wie Summenwerte aus Java Hashmap

Dies sind die Kartenwerte, die ich zusammenfassen möchte.

HashMap<String, Float> map = new HashMap<String, Float>(); 

map.put("First Val", (float) 33.0); 
map.put("Second Val", (float) 24.0); 

Ass eine weitere Frage, was passiert, wenn ich 10 oder 20 Werte in einer Karte, wie kann ich sie alle, ich a „für“ machen müssen zusammenzufassen?

Grüße und danke für die Hilfe.

+3

Insteaf von '(float) 33.0' können Sie' 33f' oder '33.0f' – Christian

+0

Welche Schritte verwenden würde * Sie * tun, um einen Haufen von Werten aus einer Sammlung unbekannter Größe zu summieren? Ja, ein "for" oder eine "loop" hört sich an - suchen Sie danach. – user2864740

+0

Ich glaube nicht, dass diese Frage ein echtes Duplikat ist. Dies ist spezifischer. und die Lösung in Java 8 ist map.values ​​(). stream(). mapToDouble (Double :: doubleValue) .sum() – Kuzeko

Antwort

13

Wenn Sie alle die Werte in einem Map hinzufügen müssen, versuchen Sie dies:

float sum = 0.0f; 
for (float f : map.values()) { 
    sum += f; 
} 

Am Ende der sum Variable, die die Antwort enthält. Also ja, zum Durchlaufen eines Map Werte ist es am besten, eine for Schleife zu verwenden.

+0

Sie schlagen mich dazu! +1 – luksch

+0

Vielen Dank für Ihre Zeit, es funktioniert und ich habe das Ergebnis, dass ich wollte !! – kennechu

+1

In Java 8 können Sie tun map.values ​​(). Stream(). Sum() – rvazquezglez

4
Float sum = 0f; 
for (Float val : map.values()){ 
    sum += val; 
} 

//sum now contains the sum! 

A for Schleife in der Tat gut für den beabsichtigten Zweck dient, obwohl Sie auch eine while-Schleife und einen Iterator ...

+0

Vielen Dank für Ihre Zeit! – kennechu

4

Sie können auf jeden Fall nutzen konnte das eine for-loop verwenden. Sie können entweder einen Eintrag Satz verwenden:

for (Entry<String, Float> entry : map.entrySet()) { 
    sum += entry.getValue(); 
} 

oder in diesem Fall nur:

for (float value : map.values()) { 
    sum += value; 
}