使用可比对象对数组列表中的元素进行排序
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;
}
}
}
我做了一个 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;
}
}
}