Nie sądzę, nastąpi to tylko raz w cyklu życia aplikacji.
Więc to, co bym zrobił, to delegować do innego obiektu odpowiedzialność za zachowanie odniesienia do obiektów dodanych do tej mapy.
Więc następnym razem trzeba go usunąć, należy użyć, że „reverse map” ...
class MapHolder {
private Map<String, DomainObj> originalMap;
private Map<DomainObj,String> reverseMap;
public void remove(DomainObj value) {
if (reverseMap.contains(value)) {
originalMap.remove(reverseMap.get(value));
reverseMap.remove(value);
}
}
}
Jest to o wiele szybciej niż iteracji.
Oczywiście należy je synchronizować. Ale nie powinno to być takie trudne, jeśli odtworzysz swój kod, aby jeden obiekt był odpowiedzialny za stan mapy.
Pamiętaj, że w OOP mamy obiekty, które mają stan i zachowanie.Jeśli dane są przesyłane wokół zmiennych w dowolnym miejscu, tworzysz niepotrzebne zależności między obiektami.
Tak, zajmie ci to trochę czasu, aby poprawić kod, ale czas spędzony na poprawieniu go, pozwoli Ci zaoszczędzić wiele bólu głowy w przyszłości. Pomyśl o tym.
Używam HashMap Javy – Supertux