1. Home
  2. Computing & Technology
  3. Java
Paul Leahy
Paul's Java Blog

By Paul Leahy, About.com Guide to Java

Answer to Monday's Comparator Question

Sunday May 3, 2009

On Monday the programming question was to create two classes that implement the Comparator interface. These classes were to sort the given array of Airplane objects using the Arrays.sort method:

  • in alphabetical order according to their origin.
  • in ascending numerical order according to their number of passengers.

Here's my version:

import java.util.Comparator;
public class PassengerComparator implements Comparator< Airplane >{

  public int compare(Airplane plane1, Airplane plane2)
  {

    int passengersNum1 = plane1.getPassengerNumber();
    int passengersNum2 = plane2.getPassengerNumber();

    if (passengersNum1 > passengersNum2)
    {
      return 1;
    }
    else if(passengersNum1 < passengersNum2)
    {
      return -1;
    }
    else
    {
      return 0;
    }
  }
}

import java.util.Comparator;
public class OriginComparator implements Comparator< Airplane >{

  public int compare(Airplane plane1, Airplane plane2)
  {
    String origin1 = plane1.getOrigin();
    String origin2 = plane2.getOrigin();

    return origin1.compareTo(origin2);
  }
}

The two classes can be used to sort the array of Airplane objects as follows:

import java.util.Arrays;
public class Main {

  public static void main(String[] args) {

    Airplane AL111 = new Airplane("Airbus A330", 205 , "London", "Dublin");
    Airplane BA269 = new Airplane("Boeing 737", 160, "Chicago", "Los Angeles");
    Airplane AF009 = new Airplane("Boeing 767", 175, "Glasgow", "Paris");
    Airplane UL414 = new Airplane("Airbus A330", 23 , "Geneva", "Berlin");
    Airplane PA103 = new Airplane("Boeing 747", 461, "Wellington", "Brisbane");
    Airplane AF875 = new Airplane("Boeing 777", 300, "Houston", "Boston");

    Airplane[] flights = {AL111,BA269,AF009,UL414,PA103,AF875};

    //sort by the origin field
    Arrays.sort(flights, new OriginComparator());

    for(Airplane a:flights)
    {
      System.out.println(a.getFlightInfo());
    }

    System.out.println();
    //sort by the passengers field
    Arrays.sort(flights, new PassengerComparator());

    for(Airplane a:flights)
    {
      System.out.println(a.getFlightInfo());
    }
  }
}

Giving the following output:

Origin: Chicago Destination: Los Angeles Passengers: 160
Origin: Geneva Destination: Berlin Passengers: 23
Origin: Glasgow Destination: Paris Passengers: 175
Origin: Houston Destination: Boston Passengers: 300
Origin: London Destination: Dublin Passengers: 205
Origin: Wellington Destination: Brisbane Passengers: 461
 
Origin: Geneva Destination: Berlin Passengers: 23
Origin: Chicago Destination: Los Angeles Passengers: 160
Origin: Glasgow Destination: Paris Passengers: 175
Origin: London Destination: Dublin Passengers: 205
Origin: Houston Destination: Boston Passengers: 300
Origin: Wellington Destination: Brisbane Passengers: 461
Comments

No comments yet. Leave a Comment

Leave a Comment

Line and paragraph breaks are automatic. Some HTML allowed: <a href="" title="">, <b>, <i>, <strike>

About.com Special Features

Holiday Central

What to eat, where to go, fun things to do and how to save money on the perfect gifts. More >

Family Tech Center

Stay connected and entertained with reviews on tips on the latest HDTVs, cellphones and more. More >