使用可比对象对数组列表中的元素进行排序

Using comparable to sort elements in arraylist of object

我做了一个 Java 程序来添加航班详细信息,我想使用比较器根据航班名称执行排序操作。但是我在这一行的 FLight.java 中遇到编译错误....Collections.sort(flightObject,new Compareid());

package com.flight;


import java.util.*;

public class Flight 
{
     public String flightName;
     public String source;
     public String destination;
     public int flightId;
     public int flightFare;


     public Flight(String flightName,int flightId,String source, String destination, int flightFare) 
     {
          super();
          this.flightName = flightName;
          this.source = source;
          this.destination = destination;
          this.flightId = flightId;
          this.flightFare = flightFare;
     }

    public String getFlightName() 
    {
        return flightName;
    }
    public int getFlightId() 
    {
        return flightId;
    }
    public String getSource() {
        return source;
    }
    public String getDestination() {
        return destination;
    }

    public int getFlightFare() {
            return flightFare;
    }

    public boolean searchFlight(int originalFlightId, int newFlightId )
    {
        if(originalFlightId==newFlightId)
        {
            return true;
        }
        else
        {
            return false;
        }

    }


    class Compareid implements Comparator<Flight>{

        public int compare(Flight flightObject1,Flight flightObject2){
            return (flightObject1.flightName.compareTo (flightObject2.flightName)); 
        }

    }
}

这是主要的 class................

package com.main;

import com.flight.*;

import java.util.*;

public class HighFly
{

    public static void main(String[] args) 
    {

        Flight indigo=new Flight("Indigo",1000,"Trivandrum","Dubai",25000);
        Flight emirates=new Flight("Emirates",1001,"Dehi","US",30000);
        Flight airindia=new Flight("Air India",1002,"Kochi","Malaysia",29000);

        ArrayList<Flight>flightList=new ArrayList<Flight>();
        flightList.add(indigo);
        flightList.add(emirates);
        flightList.add(airindia);

        System.out.println("FlightId       FlightName         Source            Destination        Fare");
            for(Flight flightObject:flightList)
            {
                System.out.print(flightObject.getFlightId());
                System.out.print("\t\t"+flightObject.getFlightName());
                System.out.print("\t\t"+flightObject.getSource());
                System.out.print("\t\t"+flightObject.getDestination());
                System.out.println("\t\t"+flightObject.getFlightFare());
            }

            //SEARCHING FLIGHT EXISTS
            System.out.println("Enter flight id");
            Scanner scanner= new Scanner(System.in);
            int checkFlightId=scanner.nextInt();
            for(Flight flightObject:flightList)
            {
                if(flightObject.searchFlight(flightObject.flightId,checkFlightId))
                {
                    System.out.println("Success");

                }
                else
                {
                    System.out.println("Not success");

                }
            }

            //*********sorting***********
            for(Flight flightObject:flightList)
            {
            Collections.sort(flightObject,new Compareid());
            }


            System.out.println("     after sorting       ");
            System.out.println("FlightId       FlightName         Source            Destination        Fare");
            for(Flight flightObject:flightList)
            {
                System.out.print(flightObject.getFlightId());
                System.out.print("\t\t"+flightObject.getFlightName());
                System.out.print("\t\t"+flightObject.getSource());
                System.out.print("\t\t"+flightObject.getDestination());
                System.out.println("\t\t"+flightObject.getFlightFare());
            }



    }



}

帮我解决这个问题。我想在 arraylist 中实现它。请找出以下代码中的错误。

将比较器移出航班 Class

import java.util.Comparator;

    class Compareid implements Comparator<Flight> {
        public int compare(Flight flightObject1, Flight flightObject2) {
            return (flightObject1.flightName.compareTo(flightObject2.flightName));

        }
    }

Collections.sort(flightList, new Compareid()); // 需要传递列表而不是单独的Objects 参考下面的HighFlyClass

import java.util.*;

public class HighFly {

    public static void main(String[] args) {

        Flight indigo = new Flight("Indigo", 1000, "Trivandrum", "Dubai", 25000);
        Flight emirates = new Flight("Emirates", 1001, "Dehi", "US", 30000);
        Flight airindia = new Flight("Air India", 1002, "Kochi", "Malaysia",
                29000);

        ArrayList<Flight> flightList = new ArrayList<Flight>();
        flightList.add(indigo);
        flightList.add(emirates);
        flightList.add(airindia);

        System.out
                .println("FlightId       FlightName         Source            Destination        Fare");
        for (Flight flightObject : flightList) {
            System.out.print(flightObject.getFlightId());
            System.out.print("\t\t" + flightObject.getFlightName());
            System.out.print("\t\t" + flightObject.getSource());
            System.out.print("\t\t" + flightObject.getDestination());
            System.out.println("\t\t" + flightObject.getFlightFare());
        }

        // SEARCHING FLIGHT EXISTS
        System.out.println("Enter flight id");
        Scanner scanner = new Scanner(System.in);
        int checkFlightId = scanner.nextInt();
        for (Flight flightObject : flightList) {
            if (flightObject.searchFlight(flightObject.flightId, checkFlightId)) {
                System.out.println("Success");

            } else {
                System.out.println("Not success");

            }
        }

        // *********sorting***********
    for (Flight flightObject : flightList) {
            Collections.sort(flightList, new Compareid());
    }

        System.out.println("     after sorting       ");
        System.out
                .println("FlightId       FlightName         Source            Destination        Fare");
        for (Flight flightObject : flightList) {
            System.out.print(flightObject.getFlightId());
            System.out.print("\t\t" + flightObject.getFlightName());
            System.out.print("\t\t" + flightObject.getSource());
            System.out.print("\t\t" + flightObject.getDestination());
            System.out.println("\t\t" + flightObject.getFlightFare());
        }

    }

}

更新后的航班class是

public class Flight {
    public String flightName;
    public String source;
    public String destination;
    public int flightId;
    public int flightFare;

    public Flight(String flightName, int flightId, String source,
            String destination, int flightFare) {
        super();
        this.flightName = flightName;
        this.source = source;
        this.destination = destination;
        this.flightId = flightId;
        this.flightFare = flightFare;
    }

    public String getFlightName() {
        return flightName;
    }

    public int getFlightId() {
        return flightId;
    }

    public String getSource() {
        return source;
    }

    public String getDestination() {
        return destination;
    }

    public int getFlightFare() {
        return flightFare;
    }

    public boolean searchFlight(int originalFlightId, int newFlightId) {
        if (originalFlightId == newFlightId)

        {
            return true;
        } else {
            return false;
        }

    }
}