[英]How to convert a List to List<Optional>?
How can I convert a List
to List<Optional>
?如何将List
转换为List<Optional>
?
The following code produces a compilation error :以下代码产生编译错误:
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)
returns an Optional<List<UserMeal>>
, not a List<Optional<UserMeal>>
. Optional.of(mealList)
返回一个Optional<List<UserMeal>>
,而不是一个List<Optional<UserMeal>>
。
To get the desired List<Optional<UserMeal>>
, you should wrap each element of the List
with an Optional
:要获得所需的List<Optional<UserMeal>>
,您应该用Optional
包装List
每个元素:
List<Optional<UserMeal>> resultList =
mealList.stream()
.map(Optional::ofNullable)
.collect(Collectors.toList());
Note I used Optional::ofNullable
and not Optional::of
, since the latter would produce a NullPointerException
if your input List
contains any null elements.注意我使用Optional::ofNullable
而不是Optional::of
,因为如果您的输入List
包含任何空元素,后者会产生NullPointerException
。
Simple conversion of mealList to Optional mealList 到 Optional 的简单转换
Optional.ofNullable(mealList) Optional.ofNullable(mealList)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.