我正在尝试实现下面的公交路线排序算法。
客户搜索从A到B的巴士,并选择首选的载体。(例如:达拉斯到芝加哥的灰狗)假设有一个web服务,返回A到B的巴士路线选项列表,每个BusOption对象都有以承运人作为属性之一的分段列表,以及出发时间、到达时间等。
我需要按下面的顺序对结果进行排序。
例如:达拉斯到芝加哥乘灰狗
ORG DEST CARRIER DEPART ARRIVAL
我最初想为每组使用一个集合,这样就有6个Set对象。在将WS响应映射到包含段列表和isPreferredCarrier标志的isPreferredCarrier类的自定义响应时,如果至少有一个载波是非预置的,则将prefferredCarrier标志设置为false。然后,
If(routeOption.getSegments.size()==1 and routeOption.isPreferredCarrier()){
Add to Set 1
}else //continue similar logic and add to corresponding Set
按1到6的顺序合并所有集合。
这是正确和最佳的方法吗?如果您认为有更好的排序逻辑,请提供建议。
发布于 2015-07-01 17:56:37
如果至少有一个载波是非首选的,则不能将isPreferredCarrier标志设置为false,因为在这种情况下不能设置3。因此,应该保留每个段的标志:
if (routeOption.getSegments.size()==1 &&
routeOption.getSegments[0].isPreferredCarrier())
Add to Set 1;
else if (routeOption.getSegments.size()==2 &&
routeOption.getSegments[0].isPreferredCarrier() &&
routeOption.getSegments[1].isPreferredCarrier())
Add to Set 2;
else if (routeOption.getSegments.size()==2 &&
routeOption.getSegments[0].isPreferredCarrier())
Add to set 3;
else ...
https://stackoverflow.com/questions/31167950
复制相似问题