我正在使用一个包含以下格式信息的 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}
]
我正在尝试根据 Key3 的值获取 Key2 的值。我知道 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();
}
感谢您的帮助。
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<T>
中存在值时,才应调用Optional.get()
否则,如果存在,最好利用orElse
或orElseGet
来解包该值,否则提供默认值。
理想情况下,更好的方法是更改方法签名以返回Optional<String>
,然后让此 API 的调用方决定在无值情况下要执行的操作。
- 有关更多详细信息,请参阅
Optional<T>
API。 - 如果您不熟悉
Optional<T>
类型,请参阅这篇关于它的文章。