我正在使用包含以下格式信息的API:
[
{Key1: Value1,
Key2: Value2A,
Key3: Value3A,
Key4: Value4A},
{Key1: Value1,
Key2: Value2B,
Key3: Value3B,
Key4: Value4B},
{Key1: Value1,
Key2: Value2C,
Key3: Value3C,
Key4: Value4C}
]
我试图根据Key2的值获取Key3的值。我知道Key2的价值是什么,但Key3的值是在运行时生成的。我想比较Key2的值,如果它匹配则从该对象返回Key3的值。
我在网上阅读完它后尝试使用流,但是我无法将整个对象或特定值作为字符串获取。
以下是我尝试过的,完全没有回复的内容:
public static String fetchCarModel(String value2A) {
final Optional<CarModel> carModel = Car.api().models().list().stream()
.filter(r -> r.getKey().equals(value2A)) // Check for the correct object
.findAny();
return carModel.get().getId();
}
感谢您的帮助。
答案 0 :(得分:1)
似乎对Car.api().models().list()
的调用返回List<CarModel>
,其中CarModel
具有上述四个属性。
在这种情况下,要达到上述要求,您可以执行以下操作:
public static String fetchCarModel(String value2A) {
final Optional<CarModel> carModel = Car.api().models().list().stream()
.filter(carModel -> carModel.getKey2().equals(value2A)) // Check for the correct object
.findAny();
return carModel.get().getKey3(); // get the value of this property
}
注意,如果您确定Optional.get()
中存在值,则应该只调用Optional<T>
,否则最好利用orElse
或orElseGet
解包如果存在,则值提供默认值。
理想情况下,更好的方法是更改方法签名以返回Optional<String>
,然后让此API的调用者决定在无值的情况下做什么。
Optional<T>
API。Optional<T>
类型,请参阅此帖子。