java如何将列表转换为列表<可选>?
如何将List
转换为List<Optional>
以下代码生成编译错误:
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;
}
# 1 楼答案
Optional.of(mealList)
返回一个Optional<List<UserMeal>>
,而不是一个List<Optional<UserMeal>>
要获得所需的
List<Optional<UserMeal>>
,应该用Optional
包装List
的每个元素:注意,我使用了
Optional::ofNullable
而不是Optional::of
,因为如果输入List
包含任何空元素,后者将生成NullPointerException
# 2 楼答案
将mealList简单转换为可选
可选。努勒布尔(米利斯特)