Java 在从ArrayList返回变量之前,如何比较两个对象中的变量?

Java 在从ArrayList返回变量之前,如何比较两个对象中的变量?,java,Java,我有一个类,FlightDatabase,它包含许多AirTravel对象,这些AirTravel对象具有以下详细信息:起点机场、目的地机场和飞行里程数 例如,一个空中旅行对象可能具有起点:A、目的地:B和里程:400 以下字符串数组表示数据库中存在的每个AirTravel对象,第一个字母是起点,第二个字母是目的地,第三个字母是飞行里程数 “AB800”、“BC900”、“CD400”、“DE400”、“BF400”、“CE300”、“DE300”、“EB600”、“CE200”、“DC700”

我有一个类,
FlightDatabase
,它包含许多
AirTravel
对象,这些AirTravel对象具有以下详细信息:起点机场、目的地机场和飞行里程数

例如,一个
空中旅行
对象可能具有起点:A、目的地:B和里程:400

以下字符串数组表示数据库中存在的每个
AirTravel
对象,第一个字母是起点,第二个字母是目的地,第三个字母是飞行里程数

“AB800”、“BC900”、“CD400”、“DE400”、“BF400”、“CE300”、“DE300”、“EB600”、“CE200”、“DC700”、“EB500”、“FD200”

在这个字符串中有许多重复的航班:
DE400
DE300
,然后是
CE300
CE200

我需要能够从
FlightDatabase
返回
airthivel
对象,并忽略任何里程数较高的航班

public AirJourney getFlightDetailsFromAirportPairing(String airportPair)
    {
        for(AirJourney journey : database)
        {
            String journeyPair = journey.getOriginAirport() + journey.getDestinationAirport();
            if(airportPair.equals(journeyPair))
            {
                return journey;
            }
        }

        return new AirJourney(0, null, null);
    }
下面的方法允许使用由两个字母组成的字符串从数据库返回AirTravely对象,该字符串将与对象中保存的始发机场和目的地机场相匹配。但是,此方法将返回第一个匹配对象,而不是最小英里数的对象

public AirJourney getFlightDetailsFromAirportPairing(String airportPair)
    {
        for(AirJourney journey : database)
        {
            String journeyPair = journey.getOriginAirport() + journey.getDestinationAirport();
            if(airportPair.equals(journeyPair))
            {
                return journey;
            }
        }

        return new AirJourney(0, null, null);
    }
例如,如果我调用`getFlightDetailsFromAirportPairing(“DE”),则返回DE400航班,而我希望返回DE300航班,并且忽略DE400航班


我不知道如何修改此方法,使其返回最低里程数的航班

这样的东西可以用吗

其思想是存储所看到的最低值,并且每当您看到具有较低值的对象时,您存储AirTravely对象和距离

public AirJourney getFlightDetailsFromAirportPairing(String airportPair){
        double lowestDistance = Double.MAX_VALUE;
        AirJourney lowestDistanceAirJourney = null;
        for (AirJourney journey : database) {
            String journeyPair = journey.getOriginAirport() + journey.getDestinationAirport();
            if(airportPair.equals(journeyPair)) {
                if (lowestDistanceAirJourney == null || journey.getMiles() < lowestDistance) {
                    lowestDistanceAirJourney = journey;
                    lowestDistance = journey.getMiles();
                }
            }
        }
        return lowestDistanceAirJourney;
}
公共航空旅行GetFlightDetailsFromAirPortPair(字符串airportPair){
双倍最低距离=双倍最大值;
航程最低距离航程=空;
用于(航空旅行:数据库){
字符串journeyPair=travely.getOriginAirport()+travely.getDestinationAirport();
if(airportPair.equals(journeyPair)){
if(LowestDistanceAirTravely==null | |旅程.getMiles()
公共航空旅行getFlightDetailsFromAirportPairing(字符串airportPair)
{
航程匹配航程=新航程(0,空,空);
用于(航空旅行:数据库)
{
字符串journeyPair=travely.getOriginAirport()+travely.getDestinationAirport();
if(airportPair.equals(journeyPair))
{
if(matchTravely.getMiledge()==0)
{
旅行=旅行;
}
else if(旅程.getMiledge()

在每次旅程中循环并添加里程检查。

使用以下使用java 8 streams的方法,它可能会帮助您:

    public static String getFlightDetailsFromAirportPairing(String airportPair) {
            List<String> database = Arrays.asList("DE400", "DE300");  // you can get it from your database
            String journeyPair = "DE"; // you can get it from your database
            int minimumMiles = database.stream().map(value -> Integer.valueOf(value.split("(?<=\\D)(?=\\d)")[1])).collect(Collectors.toList()).stream().reduce((x, y) -> x.compareTo(y) <= 0  ? x : y).get();
            if (airportPair.equals(journeyPair) ) {
                return journeyPair + minimumMiles;
            } else {
                return null;
            }           
}
公共静态字符串getFlightDetailsFromAirportPairing(字符串airportPair){
List database=Arrays.asList(“DE400”、“DE300”);//您可以从数据库中获取它
String journeyPair=“DE”//您可以从数据库中获取它

int minimumMiles=database.stream().map(value->Integer.valueOf(value.split)()您可以创建一个变量来存储符合airportPair字符串的最低met旅程。而不是立即返回旅程,循环整个数据库,与保存在变量中的旅程进行比较,如果新旅程的长度较短,则替换
int minimumMiles = database.stream().map(journey -> journey.getMiles()).collect(Collectors.toList()).stream().reduce((x, y) -> x.compareTo(y) <= 0  ? x : y).get();