title: Sorting an array using Comparator
body: <p>I have the following code. When I try to compile it, it gives me the following error:</p>
  
  <pre><code>The method sort(List&lt;T&gt;, Comparator&lt;? super T&gt;) in the type Collections is not 
  applicable for the arguments (Software[], new Comparator(){}) 
  The type new Comparator(){} must implement the inherited abstract method
  Comparator.compare(Object, Object)
  </code></pre>
  
  <h3>Code</h3>
  
  <pre><code>import java.text.DecimalFormat; // For proper currency  
  import java.util.Comparator;
  import java.util.Collections;
  
  
  public class Software
  
  {
  // Declare variables
  
  String SoftwareTitle; // SoftwareTitle
  int SoftwareStock;    // Software totals
  double SoftwarePrice; // Software Price
  int SoftwareNum;      // Software Product ID
  double CalculateInventory;  // To add inventory
  double SoftwareValue;       // Software Total value
  double value;               // Complete inventory total
  
  Software( String softtitle, int softstock, double softprice, int softitemnum )
  
  {
      // Create object constructor
  
      SoftwareTitle = softtitle;
      SoftwareStock = softstock;
      SoftwarePrice = softprice;
      SoftwareNum = softitemnum;
  
      } 
  
      // Set Software Title
  
      public void setSoftwareTitle( String softtitle )
      {
          SoftwareTitle = softtitle;
      } 
  
  
      // Return Software Title
  
      public String getSoftwareTitle()
      {
          return SoftwareTitle;
      } 
  
      // Set software inventory
      public void setSoftwareStock( int softstock)
      {
          SoftwareStock = softstock;
      } 
  
      // Return software inventory
      public int getSoftwareStock()
      {
          return SoftwareStock;
      }
  
      // Set software price
  
      public void setSoftwarePrice( double softprice )
      {
          SoftwarePrice = softprice;
      }
  
      // Return software price
      public double getSoftwarePrice()
      {
          return SoftwarePrice;
  
      }
  
      // Set item number
  
      public void setSoftwareNum( int softitemnum )
      {
          SoftwareNum = softitemnum;
            }         //
  
      //return software item number
  
      public int getSoftwareNum()
      {
          return SoftwareNum;
      } //
  
  
      // calculate inventory value
  
      public double Softwarevalue()
      {
          return SoftwarePrice * SoftwareStock;
  
      } 
  
      public void setCalculateInventory (double value){
          this.CalculateInventory = value;
      }
  
  
  
      public double getCalculateInventory(){
          double value = 0;
          for(int i = 0; i &lt; 3; i++){
              value = Softwarevalue();
          }
          return value;
      }
  
  
   }//end method value
  
   //
  
  import java.text.DecimalFormat; // For proper currency  
  import java.util.Arrays;
  import java.util.Collections;
  import java.util.Comparator;
  
  
   public class Inventory {
  
  public static void main( String args[] )
  
  {
  
      // Start array of software titles
  
      Software[] aSoftware = new Software[4];
  
      aSoftware[0]= new Software("Command and Conquer ", 6, 29.99, 10122); 
          aSoftware[1]= new Software("Alice in Wonderland", 1, 10.99,10233);
          aSoftware[2]= new Software("Doom", 1, 10.99, 10344);
      aSoftware[3]= new Software("Walking Dead", 6, 9.99, 10455);
  
  //Set currency format
      DecimalFormat money = new DecimalFormat("$0.00");
  
  // Sort in order of Software Name
  
      Collections.sort(aSoftware, new Comparator() {
      public int compare(Software s1, Software s2) {
      return s1.getSoftwareTitle().compareTo(s2.getSoftwareTitle());
  
                  }
              });
  
  
  
  // Display software title, number of units, cost, item number and total inventory
  
       for (int i = 0; i &lt; aSoftware.length; i++){    
  
  System.out.println("Software Title is "+ aSoftware[i].getSoftwareTitle() );
  
  System.out.println("The number of units in stock is "+    aSoftware[i].getSoftwareStock() );
  
  System.out.println("The price of the Software Title is "+ (money.format(aSoftware[i].getSoftwarePrice() )));
  
  System.out.println( "The item number is "+ aSoftware[i].getSoftwareNum());
  
  System.out.println( "The value of the Software Inventory is "+  (money.format(aSoftware[i].Softwarevalue() )));
  
  System.out.println();   
              }
  
  //output total inventory value
  
  double total = 0.0;
      for (int i = 0; i &lt; 3; i++){ 
      total +=  aSoftware[i].getCalculateInventory();            
          }
      System.out.printf("Total Value of Software Inventory is: \t$%.2f\n", total);
  
  
  //end output total inventory value
  
  
  
  
  
  
  
  
   }
   }
  
   //
  
   //end 
  </code></pre>
  
  <p>How do I get the software titles (an array) to display in alphabetical order using the Comparator?</p>