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