Создание новой коллекции с подсчитанными суммами из HashSet существующего ArrayList - PullRequest
0 голосов
/ 23 февраля 2020

Я борюсь со следующим:

Я строю систему заказов. У меня есть ArrayList «продажи», список содержит некоторые переменные и HashSet с элементами, которые были проданы как часть заказа. Есть класс Part с геттерами для имени детали (getName) и цены детали (getPrice).

ArrayList "sales" содержит: (int orderNumber, LocalDate date, OrderItem orderItem)

И выглядит так :

Заказ: 1, дата: 2020-02-23, Элементы: [часть: Монитор, количество: 3, часть: ЦП, количество: 2]

Заказ: 2, дата: 2020-02-23, элементы: [часть: гарнитура, количество: 1, часть: чехол, количество: 1]

заказ: 3, дата: 2020-02-23, элементы: [часть: процессор, количество: 10, часть: клавиатура, количество: 10]

Каждый элемент OrderItem содержит: (Part part, int quantity). Класс Part содержит (String partName, double price).

. Я хочу создать новую коллекцию, в которой будет указано общее количество деталей, проданных за день, например:

Monitor 3

ЦП 12

Гарнитура 1

Корпус 1

Клавиатура 10

Как я могу это сделать?

1 Ответ

0 голосов
/ 23 февраля 2020

Я попытался написать что-то для вас, используя HashMap<String, Integer>, который будет содержать список пар «ключ-значение» ваших деталей и их соответствующих проданных количеств за день.

Надеюсь, это поможет:

public static void main(String[] args) {
    Map<String, Integer> map = new HashMap<>();
    for (Orderitem item: listOfOrderItems) { // here you need to get a list of your ordered items for the day
        Part part = item.getPart(); // here you need some form of a getter to access the given part from the given Orderitem
        String partName = part.getName();
        if (!map.containsKey(partName)) {
            map.put(partName, item.getQuantity());
        } else {
            map.put(partName, map.get(partName) + item.getQuantity());
        }
    }
}
...