Алгоритм слияния элементов коллекций

273
06 марта 2017, 10:25

Здравствуйте, вот суть моей проблемы, есть несколько коллекций:

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. Сколько смог купил/продал, что не смог, та часть запроса осталась.

Скорость имеет значение. Буду признателен и за код, и за просто мысли или идеи о том, как это можно было бы сделать. Это задание у меня завершающее по коллекциям, так что видимо надо именно основываясь на свойствах разных коллекций, придумать какую-то хитрость для ускорения работы.

READ ALSO
Как исправить &ldquo;Task &#39;Som&#39; not found in root project &#39;SomaAndroid&#39; &rdquo;?

Как исправить “Task 'Som' not found in root project 'SomaAndroid' ”?

Как исправить Task 'Som' not found in root project 'SomaAndroid'? Где искать и с чем она связана? Возникла после обновления Android Studio

305
что с AudioStream

что с AudioStream

Пишу все точности, как на видео, но Eclipse выдаёт ошибку: не существует AudioStream

240
Библиотека для word под Андроид

Библиотека для word под Андроид

Есть ли какя нибудь удобная и простая библиотека для androidЧтобы можно было в ней создать word документ, и добавить допустим картинку и можно...

243
парсинг xml в массив String

парсинг xml в массив String

вот предположим у меня есть xml файл в проекте андроид

291