У меня есть несколько заказов для загрузки и выгрузки в маршрутах доставки, одному маршруту может быть присвоен один OrderDocument
для загрузки, выгрузки или обоих.
Каждый заказ-документ упорядочен по индексу в назначенном маршруте. Итак, класс выглядит так:
class OrderDocument implements Comparable<ModelTask>{
int order_id; // The document ID
int route_load_id; // The route this order is assigned to be loaded
int route_unload_id; // The route this order is assigned to be loaded, may be same as route_load_id and viceversa
int route_load_index; // The index order in load route
int route_unload_index; // The index order in unload route
}
Тогда у меня есть класс Route:
class Route{
int id; // ID of route, this value should be in OrderDocument.route_load/unload_id
ArrayList<OrderDocument> orders; // **I WANT TO SORT THIS LIST**
...
Итак, у меня есть функция, которая создает экземпляр Route и добавляет объекты OrderDocument в его orders
ArrayList, поэтому список должен содержать документы, которые Route.id
находятся в route_load_id
или в route_unload_id
Основная проблема
Мне нужно, чтобы этот список сортировался по индексу загрузки / выгрузки, если идентификатор маршрута указан в load_id или unload_id.
На самом деле у меня есть следующий Comparator
подход, но он не работает.
private class OrdersComparable implements Comparator<OrderDocument>{
@Override
public int compare(OrderDocument x, OrderDocument y) {
if (x.route_load_id == y.route_load_id)
return x.route_load_index - y.route_load_index;
else if (x.route_load_id == y.route_unload_id)
return x.route_load_index - y.route_unload_index;
else if (x.route_unload_id == y.route_load_id)
return x.route_unload_index - y.route_load_index;
else if (x.route_unload_id == y.route_unload_id)
return x.route_unload_index - y.route_unload_index;
else
return 0;
}
}
* ** 1 022 тысяча двадцать-один * Пример
4 Заказа в Трассе-43, 2 для загрузки, 4 для выгрузки.
OrderDocument('order_id':1, 'route_load_id':43, 'route_unload_id':null, 'route_load_index':0, 'route_unload_index':null)
OrderDocument('order_id':2, 'route_load_id':43, 'route_unload_id':null, 'route_load_index':2, 'route_unload_index':null)
OrderDocument('order_id':3, 'route_load_id':null, 'route_unload_id':43, 'route_load_index':null, 'route_unload_index':1)
OrderDocument('order_id':1, 'route_load_id':null, 'route_unload_id':43, 'route_load_index':null, 'route_unload_index':3)
Фактический заказ по order_id
: 1, 2, 3, 1
Требуется заказ по order_id
: 1, 3, 2, 1