The fundamental unit of search is a single WORD, and the critical relationship to track is the binding between a WORD and the PAGE it occurs in. To track the mapping between WORDs and the PAGEs that they occur in, the Moogle suite will use a hash mapping, specifically, a from-scratch implementation of the java.util.Map interface, as documented in the Java 1.4.2 API specification, backed by a hash table implementation. The developer MAY instead choose to implement the generic version of java.util.Map as documented in the Java 1.5.0 API.
This module MUST be named MondoHashMap.java and MUST support the complete java.util.Map interface and contract specification, including operations marked as ``optional'' in the JDK documentation. The MondoHashMap implementation MUST NOT use, access, refer to, or rely on the AbstractMap or any other implementation of the Map interface. The MondoHashMap implementation MAY employ the java.util.AbstractSet implementation to support the Map.keySet() and/or Map.values() operations.
As part of the project deliverables, the developer MUST demonstrate the performance of the MondoHashMap and show that it meets the quantitative requirements given in Section 5. To do so, it will probably be necessary to provide additional data members, methods, or subclasses to track quantities such as number of allocations and reallocations, number of accesses, wall clock time, etc. The choice of which data/methods/subclasses to provide is up to the developer, but all such entities MUST be documented in the API documentation (c.f., Section 6.1).
The MondoHashMap will form the core of the first milestone submission; refer to Section 6.1 for details on the full submission requirements.
Terran Lane 2005-01-19