如何将List
转换为Optional<List>
?
以下代码产生编译错误:
public Collection<Optional<UserMeal>> getAll() {
Comparator comparator = new SortedByDate();
List<UserMeal> mealList = new ArrayList<>(repository.values());
Collections.sort(mealList,comparator);
Collections.reverse(mealList);
**List<Optional<UserMeal>> resultList = Optional.of(mealList);**
return resultList;
}
答案 0 :(得分:6)
Optional.of(mealList)
会返回Optional<List<UserMeal>>
,而不是List<Optional<UserMeal>>
。
要获得所需的List<Optional<UserMeal>>
,您应该使用List
包装Optional
的每个元素:
List<Optional<UserMeal>> resultList =
mealList.stream()
.map(Optional::ofNullable)
.collect(Collectors.toList());
注意我使用了Optional::ofNullable
而不是Optional::of
,因为如果您的输入NullPointerException
包含任何空元素,后者会生成List
。
答案 1 :(得分:2)
featlist到Optional的简单转换
Optional.ofNullable(mealList)