Запустите ряд форумов для пар ключ / значение, хранящихся в java.util.List - PullRequest
4 голосов
/ 27 октября 2019

Скажем, у меня есть список, содержащий компоненты, подобные следующим:

[
    {
        "id": 1,
        "name": "Displacement",
        "value": 200
    },
    {
        "id": 2,
        "name":"Time",
        "value": 120
    },
    {
        "id":3,
        "name":"Mass",
        "value": 233
    },
    {
        "id":4,
        "name": "Acceleration",
        "value": 9.81
    },
    {
        "id": 5,
        "name":"Speed of Light",
        "value": 300000000
    }
]

Каждый компонент является объектом следующего класса:

class Component {
    Integer id;
    String name;
    Long value;

    // necessary getters and setters
}

Мне нужно получить следующие показатели извышеприведенный список: Velocity (Displacement/Time), Force (Mass * Acceleration) и Energy (Mass * Speed of Light^2)

Что больше всего из этого получается? Я мог бы вывести список и отфильтровать необходимые компоненты следующим образом:

Double calculateVelocity() {
    Component displacement = list.stream().filter(c -> c.getName().equals("Displacement")).findFirst().orElseThrow(//throw err);
    Component time = list.stream().filter(c -> c.getName().equals("Time")).findFirst().orElseThrow(//throw err);
    return displacement.value / time.value;
} // repeat for other metrics

Это было бы утомительно, так как в окончательной реализации было бы гораздо больше метрик, которые можно было бы рассчитать одновременно. Есть ли лучший способ?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...