使用可比以按对象
我已经做了Java程序添加的航班信息的ArrayList的元素,我想基于使用比较航班名称进行排序操作。但我得到的FLight.java编译错误,在这条线.... Collections.sort(flightObject,新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));
}
}
}
这是主类.............
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来实现这个。请在以下代码中找到该错误。
移至比较器出来的飞行类
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,新Compareid()); //需要传递,而不是个别的对象参考下面的海天翔类列表。
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;
}
}
}
虽然我明白,你想是有帮助的,请尽量避免回答这个不适合在我们的[说明中心]规定的指导(https://stackoverflow.com/help)的问题。 –
当然@JoeC,感谢它指向了! – Saran
@Saran:谢谢你这么多。我把它整理好了。此解决方案工作... –
和错误是... –
并请格式化你的代码。你的缩进遍布整个地方,很难阅读。 –
你得到什么错误?请添加它在你的questiion – byteC0de