Sortieren eines array mit Komparator

Ich habe den folgenden code. Wenn ich versuche zu kompilieren, dann erhalte ich die folgende Fehlermeldung:

The method sort(List<T>, Comparator<? super T>) 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

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 < 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 < 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 < 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 

Wie bekomme ich den software-Titel (ein array), um die Anzeige in alphabetischer Reihenfolge mit dem Komparator?

Was ist der Fehler, den du bekommen?
Die Methode sort(List<T>, Komparator<? super T>) in der Art der Sammlungen ist nicht anwendbar für die Argumente (Software, [], new Comparator(){}) Die Art new Comparator(){} implementieren muss, um die geerbte abstrakte Methode Komparator.compare(Object, Object)
Suche im code, es scheint der Fehler (compile-time) ist in der Zeile aufrufen Collections.sort(). Übergeben Sie ein array an die Methode sort erwartet Sie ein List. Konvertieren Sie Ihre array in eine Liste.

InformationsquelleAutor user1795189 | 2012-11-02

Schreibe einen Kommentar