w metodzie main wywołuje sobie 2 razy tą samą metode: placeInTrain. Do zapisu danych używam hashmapy.
jak zrobić, żeby hashmapa nie tworzyła mi się od nowa za każdym razem wywołania metody, tylko sumowała wynik?

- Rejestracja:około 21 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
W kodzie którzy podałeś mapa jest tylko jedna i wywołanie metody wcale nie tworzy nowej.
To co robisz w tym kodzie to jest ciężki #rakcontent niemniej problem który opisałeś w ogóle nie występuje. Napisz może łaskawie co chciałeś osiągnąć i co się dzieje.

- Rejestracja:ponad 7 lat
- Ostatnio:około 7 lat
- Postów:39
@Shalom: chciałem żeby za każdym wywołaniem metody, hashmapa się aktualizowała tzn. sumowała wynik. Teraz wyniki się nadpisują.
Po wykoniu pierwszej metody mapa powinna wygląć tak: (1;20,2;20,3;20,4;20,5;20), po drugim( 1;35, 2;35,3;45,4;35,5;35)
- Rejestracja:ponad 12 lat
- Ostatnio:około 3 godziny
- Postów:3584
Możesz użyć Map.compute.
Działa to następująco:
Map<Integer, Integer> map = new HashMap<>();
map.put(1, 10);
int increment = 15;
// Chcemy, żeby jeśli klucza nie ma to wstawiał 15, jeśli jest to niech dodaje 15.
for(int i=1; i<=2; i++){
map.compute(i, (key, value) -> increment + (value == null ? 0:value));
}
System.out.println(map.get(1)); // Daje 25
System.out.println(map.get(2)); // Daje 15
EDIT:
Zgodnie z tym co napisał @jarekr000000 można użyć Map.merge. Zaletą jest brak null-checka.
Map<Integer, Integer> map = new HashMap<>();
map.put(1, 10);
int defaultValue = 15;
for(int i=1; i<=2; i++){
map.merge(i, defaultValue, (prevValue, newValue) -> prevValue + newValue);
}
System.out.println(map.get(1)); // Daje 25
System.out.println(map.get(2)); // Daje 15



- Rejestracja:około 21 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
o_O wkładasz do mapy nowe dane przez put to co się dziwisz że się "nadpisuja"? Myślisz trochę nad tym co robisz? Mapa ma takie rzeczy jak choćby putIfAbsent albo getOrDefault. Logika nakazywałaby że:
- pobierasz z mapy aktualną wartość
- wyliczasz nową
- wkładasz do mapy nową wartość
Nie trzeba już nawet kombinować tak jak kiedyś i sprawdzać czy w mapie jest juz dany klucz bo wystarczy ci getOrDefault gdzie możesz zwrócić 0 jeśli klucza w mapie jeszcze nie było.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.