I am having one doubt. Can't we make telephone number the Key of the TreeMap?
Then how would you retriev the phone number of a person? You would have to walk arround all the names (i.e. all the values of your TreeSet). And remeber, a TreeSet has the keys ordered, NOT the values.
Why do you need duplicate keys? Use one key for the name and an array (or more likely an ArrayList) containing the various phone numbers associated with that name as the value:
Key = "John Doe", Value = {"12345678", "87654321"}
What bennido suggests is that he wants to have more persons (DIFFERENT persons) having the same name (and obviously having different phone numbers). Not one person having more numbers.
Generally I think the question "makes" the assumption that all persons have different name. Otherwise (if there are different persons with the same name) you could still use a TreeMap (and is best to use anyway) in which you have to think of a different key. Like for e.g. a Value class consisting of both name and address (in which you will have to overload the equals() and hashCode() metods since you want to use it in a TreeMap).
Miki