Informowanie HashSet, jak sortować dane

Próbuję stworzyć HashSet (lub dowolny typ kolekcji - ale myślę, że HashSet będzie mi najbardziej odpowiadał), który pozostanie w porządku bez względu na to, co zostanie wstawione. To dla projektu menedżera kontaktów, nad którym pracuję. Eksperymentowałem z poniższym przykładem.

import java.util.*;

public class TestDriver{

    public static void main(String[] args)
    {
        FullName person1 = new FullName("Stephen", "Harper");
        FullName person2 = new FullName("Jason", "Kenney");
        FullName person3 = new FullName("Peter", "MacKay");
        FullName person4 = new FullName("Rona", "Ambrose");
        FullName person5 = new FullName("Rona", "Aabrose");


        HashSet<FullName> names = new HashSet<FullName>();

        names.add(person3);
        names.add(person1);
        names.add(person4);
        names.add(person2);

        System.out.println(names);      
   } 
}

Spodziewałem się, że wyjście umieści nazwy w porządku alfabetycznym - przynajmniej według ich imienia lub nazwiska. Jednak nie mogę nawet rozpoznać metody, którą HashSet użył, aby wymyślić to zamówienie;

[Jason Kenney, Rona Ambrose, Stephen Harper, Peter MacKay]

Moje pytanie brzmi: jak mam powiedzieć programowi, jak sortować nazwy według moich specyfikacji?

questionAnswers(5)

yourAnswerToTheQuestion