The reasons for suggesting this are:
- Criteria is not a logical specialisation of a Hash map.
- To retain current signatures and comply with java5 generics, Criteria would have to be declared as HashMap<String, Object>, while technically it is a HashMap<String, Criteria.Criterion>
- the current "put" method does not follow the contract of a Map's put method:
Criteria.put() returns the Criteria itself, whereas Map.put() returns the value which previously had the passed key.
Also, if you put() an object into a criteria and then get() the same key, you do not receive the object you put() but a Criteria.Criterion containing the object you put in. This is also not the behaviour expected by a map.