Здравствуйте, вот суть моей проблемы, есть несколько коллекций:
private List<Order> fstBookBUY;
private List<Order> fstBookSELL;
private List<Order> sndBookBUY;
private List<Order> sndBookSELL;
private List<Order> trdBookBUY;
private List<Order> trdBookSELL;
fstBookBUY, fstBookSELL - это один субъект
sndBookBUY, sndBookSELL - это второй субъект
trdBookBUY, trdBookSELL - это третий субъект
Списков по 2 на каждый субъект, это потому что в одном списке, его предложения о покупке, в другом о продаже(Все отсортированы по price).
Каждая коллекция наполнена объектами класса:
class Order {
private String book;
private String operation;
private int volume;
private float price;
private int orderId;
Order(String book,
String operation,
int volume,
float price,
int orderId) {
this.book = book;
this.operation = operation;
this.volume = volume;
this.price = price;
this.orderId = orderId;
}
// гетеры сетеры
}
Нужен такой алгоритм который бы проверил что у двух объектов Order поле price одинаковое, а book и operation разные, и если это так, то проводить операцию автоматически.
Ну на пример: есть два Order у которых
1ый ордер - price = 10, operation = "SELL", volume = 100, book = "book-1";
2ой ордер - price = 10, operation = "BUY", volume = 130, book = "book-2";
Тогда 1ый ордер вообще исчезает а у второго volume становится 30
Либо если volume у обоих был один и тот-же они оба исчезают.
Либо если у первого ордера volume был больше на 20 то второй исчезает, а у первого становится 20.
Главное что price одинаковые и заявки с разными book и operation. Сколько смог купил/продал, что не смог, та часть запроса осталась.
Скорость имеет значение. Буду признателен и за код, и за просто мысли или идеи о том, как это можно было бы сделать. Это задание у меня завершающее по коллекциям, так что видимо надо именно основываясь на свойствах разных коллекций, придумать какую-то хитрость для ускорения работы.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей