![](/img/trans.png)
[英]How to make `Map::get` return either an `Optional` of the found value or `Optional.empty()`
[英]How to get a value from an optional map?
我有一個簡短的問題。 如何從可選地圖中獲取值?
在 foreach (fuelTypesFromDriveTrain.forEach ...) 我想從地圖中提取值:
但我不知道如何訪問它們,我認為原因是我的地圖是Optional 。 有任何想法嗎 ?
// the map
final Optional<Map<String, String>> fuelTypesMap = extractAttributeElementValueMap(fuelTypeAttributes);
final Set<FuelType> fuelTypesFromDriveTrain = getFuelTypesFromDriveTrain(driveTrain);
if (refueling.getTypes().isEmpty() && !fuelTypesFromDriveTrain.isEmpty()) {
Set<String> fuelTypesKeys = new HashSet<>();
fuelTypesMap.map(Map::keySet)
.map(Collection::stream)
.orElseGet(Stream::empty)
.forEach(fuelTypeKey -> fuelTypesKeys.add(fuelTypeKey));
fuelTypesFromDriveTrain.forEach(fuelTypeFromDriveTrain -> {
if(fuelTypesKeys.contains(fuelTypeFromDriveTrain.getType())) {
String value = fuelTypesMap.get(fuelTypeFromDriveTrain.getType());
// I cannot obtain the value from the map
refueling.getTypes().add(value);
}
});
}
檢查下面的代碼
fuelTypesFromDriveTrain.forEach(fuelTypeFromDriveTrain -> {
fuelTypesMap.map(dataMap->dataMap.get(fuelTypeFromDriveTrain.getType()))
.ifPresent(value->refueling.getTypes().add(value));
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.