[英]How to convert a List to List<Optional>?
如何将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;
}
Optional.of(mealList)
返回一个Optional<List<UserMeal>>
,而不是一个List<Optional<UserMeal>>
。
要获得所需的List<Optional<UserMeal>>
,您应该用Optional
包装List
每个元素:
List<Optional<UserMeal>> resultList =
mealList.stream()
.map(Optional::ofNullable)
.collect(Collectors.toList());
注意我使用Optional::ofNullable
而不是Optional::of
,因为如果您的输入List
包含任何空元素,后者会产生NullPointerException
。
mealList 到 Optional 的简单转换
Optional.ofNullable(mealList)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.