2017-11-18 22 views
-3

자바 프로그램을 사용하여 비행 세부 사항을 추가했으며 비교자를 사용하여 비행 이름을 기준으로 정렬 작업을 수행하려고합니다. 하지만이 줄에 Flight.java에서 컴파일 오류가 발생합니다 .... Collections.sort (flightObject, new Compareid());오브젝트 arrylist의 정렬 요소에 비교 사용하기

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)); 
     } 

    } 
} 

이 메인 클래스입니다 .............

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에서 이것을 구현하고 싶다. 다음 코드에서 오류를 찾으십시오.

+1

되고 오류가 ... –

+0

그리고, 코드를 포맷하십시오. 귀하의 들여 쓰기가 모든 곳에서 이루어지기 때문에 읽는 것이 매우 어렵습니다. –

+0

어떤 오류가 발생하고 있습니까? 귀하의 질문에 답변을 추가하십시오. – byteC0de

답변

1

는 (새로운 Compareid() flightList) 비행 클래스

import java.util.Comparator; 

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

     } 
    } 

은, Collections.sort에서 비교기를 이전; // 개별 객체 대신 목록을 전달해야하는 경우 아래의 HighFly 클래스를 참조하십시오.

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()); 
     } 

    } 

} 

그리고 업데이트 된 fligh 클래스는

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

    } 
} 
+1

도움이되기를 바랍니다. [도움말 센터] (https://stackoverflow.com/help)에 나와있는 지침에 맞지 않는 질문에 답하는 것을 피하십시오. –

+0

물론 @JoeC, 그것을 지적 해 주셔서 감사합니다! – Saran

+0

@Saran : 정말 고마워요. 나는 그것을 분류했다. 이 솔루션은 효과가 ... –