Problem
Design a generic unit that implements maps. A map is an unordered collection of (key, value) entries in which no key is duplicated. Parameterize your generic unit with respect to the type of the keys and the type of the values. Provide an operation that constructs an empty map, an operation that adds a given (key, value) entry to a map, an operation that tests whether a map contains an entry with a given key, and an operation that retrieves the value in the entry with a given key. Implement your generic unit in either ADA, C++, or JAVA. Assume as little as possible about the type of the keys and the type of the values. What assumption(s) are you absolutely forced to make about these types?