(Updated solution for logging of removed values)
This solution uses the google-collections library [LINK]
import static com.google.common.collect.Maps.filterValues;
import static com.google.common.base.Predicates.equalTo;
...
Map<String, String> removedValues = filterValues(hMap, equalTo("Two"));
System.out.println(removedValues); //Log Removed Values
removedValues.clear(); //Removes from original map, since this is a view.
Note - This solution takes advantage of the fact that the Map returned by the filterValues call is a view of the elements in the original HashMap. This allows us to examine them and log out the keys that were removed, and then remove them from the original map with a simple call to clear().
You may have reasons for not wanting to use the google-collections library in your project, but if you don't, I'd suggest checking it out.