You've written the getter as
and therefore a reference to the exact same HashMap object is returned. You could, alternatively, write something like
and return a copy instead, if you so chose. But as far as
Java goes, what you see is what you get; Java never, ever magically copies an object behind your back.
Now, as far as design issues go: handing out references to a mutable private member is often a Bad Idea. There are a number of alternatives. One is to return a copy, of course. Another is to return a read-only iterator. A third is to write delegating methods like
which basically allow read-only access to the data without exposing the implementation.