//TestEmployeeArraySortByComparators.java

import java.util.Arrays;

public class TestEmployeeArraySortByComparators
{
    public static void main(String[] args)
    {
        Employee[] employeeArray =
        {
            new Employee("Frank", 5, 28),
            new Employee("Jorge", 1, 19),
            new Employee("Bill", 6, 34),
            new Employee("Michel", 3, 10),
            new Employee("Simpson", 7, 8),
            new Employee("Clark", 4, 16),
            new Employee("Lee", 8, 40),
            new Employee("Mark", 2, 30)
        };

        System.out.println("\nName\tID#\tAge");
        System.out.println("===================");
        for (Employee e : employeeArray)
        {
            System.out.println(e);
        }

        Arrays.sort(employeeArray, new EmployeeNameComparator());
        System.out.println("\nName\tID#\tAge");
        System.out.println("===================");
        for (Employee e : employeeArray)
        {
            System.out.println(e);
        }

        Arrays.sort(employeeArray, new EmployeeIdComparator());
        System.out.println("\nName\tID#\tAge");
        System.out.println("===================");
        for (Employee e : employeeArray)
        {
            System.out.println(e);
        }

        Arrays.sort(employeeArray, new EmployeeAgeComparator());
        System.out.println("\nName\tID#\tAge");
        System.out.println("===================");
        for (Employee e : employeeArray)
        {
            System.out.println(e);
        }

        /*  What will the sort be if you activate this code segment?
            Arrays.sort(employeeArray);
            System.out.println("\nName\tID#\tAge");
            System.out.println("===================");
            for (Employee e : employeeArray)
            {
                System.out.println(e);
            }
        */
    }
}
/*  Output:

    Name    ID#     Age
    ===================
    Frank   5       28
    Jorge   1       19
    Bill    6       34
    Michel  3       10
    Simpson 7       8
    Clark   4       16
    Lee     8       40
    Mark    2       30

    Name    ID#     Age
    ===================
    Bill    6       34
    Clark   4       16
    Frank   5       28
    Jorge   1       19
    Lee     8       40
    Mark    2       30
    Michel  3       10
    Simpson 7       8

    Name    ID#     Age
    ===================
    Jorge   1       19
    Mark    2       30
    Michel  3       10
    Clark   4       16
    Frank   5       28
    Bill    6       34
    Simpson 7       8
    Lee     8       40

    Name    ID#     Age
    ===================
    Simpson 7       8
    Michel  3       10
    Clark   4       16
    Jorge   1       19
    Frank   5       28
    Mark    2       30
    Bill    6       34
    Lee     8       40
*/
