1. implemented toString.
2. no-throw for invalid key on containsKey or get