首页 > 解决方案 > 针对存储在 java.util.List 中的键/值对运行一系列论坛

问题描述

假设我有一个包含如下组件的列表:

[
    {
        "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

这将是乏味的,因为最终的实现一次需要计算更多的指标。有没有更好的办法?

谢谢

标签: javajava-8key-value

解决方案


推荐阅读